在UE4中使用C++编程
使用Rider编程 通过 Rider 运行项目并启动 UE4 编辑器,在修改代码后,点击 Build -> Build Startup Project:XXX 编译。这样会热重载,让 C++ 代码的修改对编辑器生效。 类命名规范 U - UObject 派生类(Actor系列除外),例如 UTe...
使用Rider编程 通过 Rider 运行项目并启动 UE4 编辑器,在修改代码后,点击 Build -> Build Startup Project:XXX 编译。这样会热重载,让 C++ 代码的修改对编辑器生效。 类命名规范 U - UObject 派生类(Actor系列除外),例如 UTe...
安装引擎注意点 注册 Epic Games 账号后,需要绑定 GitHub 账号,才能在 GitHub 上查看 Unreal Engine 引擎源码。 安装引擎时,一定要勾选 输入调试用符号,方便后续逆向学习分析: 修改默认缓存路径 在 Windows 环境,默认缓存路径...
测试游戏 这是 Steam 上国外的一款 FPS 小众射击游戏,玩法类似战地,画风跟你的世界差不多。 经过分析,该游戏存在毁灭性漏洞,修改玩家本地的其他玩家的坐标数据为自己旁边的坐标,可以将敌对玩家短暂拉扯到自己面前并击杀他们。自...
UE4子弹常识 子弹在游戏中一般都会给出 UI 显示,我们可以根据子弹变化,很容易精确搜索到子弹的地址。而子弹的射速、后坐力等数据,基本都是在子弹内存区域前后范围内的。 找子弹基址 多次精确搜索子弹数量,找到子弹数量的地址: ...
为什么要找所有玩家的血量? 用于绘制所有玩家的血条,判断玩家是否死亡。 传统找法 一般 FPS 射击游戏中的血量满血时都是数值100类型 float。所以我们满血的时候先精确扫描单浮点100,然后掉血了搜减少的数值。没掉血再搜不变的数值...
为什么要找骨骼基址? 找骨骼基址是为了实现绘制骨架和骨骼自瞄,比如瞄准头部骨骼、胸部骨骼。 找骨骼基址 对自己的 Actor 的地址进行结构分析,防止分析错地址最好直接用 APawn,然后根据特征去查找。 ComponentToWorld 是 3x3 结构...
标识的作用? 我们如何区分 ActorArray 中的 Actor 是敌人、队友、自己、物品还是其他东西?比较通用的做法是对比多个 Actor 的结构,找出不同类型的 Actor 在同一偏移,数值的异同规律。 比如在 Actor 下 0x555 偏移,类型为 4 Bytes...
为什么需要摄像机矩阵? 我们可以用屏幕尺寸 + Actor 三维坐标 + 摄像机矩阵,通过固定算法计算出 Actor 的屏幕坐标,从而实现绘制 Actor 的数据,实现透视效果。 常规方式 先扫未知的初始值,类型单浮点。 移动镜头并搜索变动的数值...
为什么要在ActorArray中找坐标? 我们知道 ActorArray 中存放的是所有附近的 Actor,如果我们找到 ActorArray 下的坐标,则可通过遍历获取所有 Actor 的坐标。 开始找坐标 选中我们找到的 Count 地址,浏览相关内存区域(Ctrl+B),然...
什么是Count? Count 就是 UE4 引擎开发的游戏在运行过程中动态创建的 Actor 的数量,也可以说是在当前玩家一定范围内的 Actor 的数量。因为如果离得太远,由于游戏性能优化原因,是不会把非常远的 Actor 也获取的。 我们找Count来干...
UE4结构 老外丰富版本: 小龙的简洁版本: 一些常用结构的概念 UWorld 是一个单例对象,逆向 UE4 游戏很多我们想要的数据都是从他开始的。从 UWorld 中我们可以获取到 UGameInstance 和 ULevel。 UGameInstance UWorld 类里的一个属...