UE4找摄像机矩阵
为什么需要摄像机矩阵?
我们可以用屏幕尺寸 + Actor 三维坐标 + 摄像机矩阵,通过固定算法计算出 Actor 的屏幕坐标,从而实现绘制 Actor 的数据,实现透视效果。
常规方式
- 先扫未知的初始值,类型单浮点
- 移动镜头并搜索变动的数值,再移动再搜索,反复操作
- 不移动镜头,搜索不变的数值,反复操作
- 最后搜索结果数量不再减少时:
- 将结果列表里当前值带 E 的和绿色的静态地址删掉
- 依次选择地址浏览相关内存区域,数据类型切为单浮点
- 转动镜头,根据摄像机居中特征分析是否是矩阵数据
最终找到矩阵如下:
摄像机矩阵的特征
- UE4 摄像机矩阵的第三列是 0.00 0.00 0.00 x.00,最后一个数值不固定,前面3个 0.00 固定
- 除了第四行中会出现较大的数值,前面三行都不会出现较大数值
- 一般不移动镜头时,摄像机矩阵数值不会变化
- UE4 的摄像机矩阵的动态地址一般重启游戏才会变化,切换场景和房间一般不会变化
特征码方式
UE4 还可以使用摄像机矩阵的特征码快速定位,通用矩阵特征码:
1 | 00 00 00 00 00 00 00 00 00 00 80 3F 00 00 80 3F 00 00 80 3F 00 00 80 3F 00 00 00 00 00 00 00 00 00 00 80 3F 00 00 00 00 00 00 00 00 00 00 80 3F 00 00 80 3F 00 00 00 00 |
使用特征码搜索字节数组,内存去掉可写并改成方块状态(可读或可写)。一般 UE4 引擎会搜索到3个结果,依次浏览相关内存区域,找出正确的矩阵即可。
找基址
找到矩阵地址后,对地址进行指针扫描,扫描级别2,然后就能找到基址。
最终矩阵的基址和偏移为:
1 | "BattleRoyaleTrainer-Win64-Shipping.exe"+02886630 -> 20 -> 280 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 !
评论






