PC端Unity游戏Mono注入实现作弊分析
这是一篇 PC 平台的 Unity 游戏逆向分析文章,仅支持非 IL2CPP 编译方式的游戏。 不要以任何方式联系我并让我提供源代码和技术支持!!! Unity逆向须知 破解 Unity 游戏的最佳方法是 C# 编写代码并使用 Mono 注入。 由于 Unity 引擎...
这是一篇 PC 平台的 Unity 游戏逆向分析文章,仅支持非 IL2CPP 编译方式的游戏。 不要以任何方式联系我并让我提供源代码和技术支持!!! Unity逆向须知 破解 Unity 游戏的最佳方法是 C# 编写代码并使用 Mono 注入。 由于 Unity 引擎...
测试游戏 这是 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 类里的一个属...
CE的内存浏览器 1个字节 = 8个二进制位,也就是 10101010 这样8个长度的二进制。 1个字节 = 2个十六进制位,也就是 A0 这样2个长度的十六进制。 0x100002B90 - 0x100002BA8 共 0x18 个字节,也就是24字节。2个十六进制位为1字节,所以...
DBVM DBVM:全称 Dark Byte Virtual Machine,让 CE 拥有 R0 级的权限。 R0/Ring0 是内核级权限,R3/Ring3 是应用级权限,R0 级一般是显卡驱动、声卡驱动等内核驱动级的应用去获取系统底层权限来完成一些操作。我们平时用的应用,像 Q...
CE寻找基址 这里说的基址,其实是指静态地址,而真正的基址是指模块基址,但大家都在乱叫,所以就随波逐流的跟着叫了。基址也就是每次重启应用后,都不会发生变化的地址。 通过 CE 多次精确数值搜索,最终获取到了当前血量的动态地址 ...
call简介 call 是 win32 汇编中的一个调用子程序的汇编指令,类似 ARM 汇编中的 bl 指令。 可以理解成易语言中调用子程序,或者 c/c++ 语言中调用函数。 封包发送 在 win32 编程中,网络游戏发送数据包最终都会调用 send 函数来发送数...
内存 内存是计算机中重要的部件之一,它是与 CPU 进行沟通的桥梁,计算机中所有程序的运行都是在内存中进行的。 虚拟内存 通过操作系统的某些指令对物理内存进行映射,使得每个程序都拥有物理内存那么大的内存。假如我们电脑插入4G的...