安卓逆向学习交流群:692903341
最近下载了一款游戏,由于本人游戏技术差,经常会被里面的怪物虐,不断掉血,然后当然是Game over啦。
心想这怎么能行,马上就有了修改这款游戏的心思。
首先我们先看下这款游戏的安装包目录结构,判断它是由什么引擎开发的。
我们可以看到它的lib目录下有一个il2cpp.so的文件,
并且assets\bin\Data\Managed\Metadata目录下是global-metadata.dat文件
很明显该游戏是Unity 3d引擎开发,IL2CPP机制打包的游戏。
我们将global-metadata.dat和il2cpp.so文件解压到同一目录下。
此时我们可以用Il2CppDumper将游戏内的方法函数dump下来,IL2cppDumper github地址:https://github.com/Perfare/Il2CppDumper
双击Il2CppDumper.exe可执行程序。
再选择il2cpp.so 文件,第二部选择global-metadata.dat文件。
输入unity版本。
之后dump完成。
我们用记事本打开目录下生成的dump.cs文件
通过查找,我们找到了收到伤害这个方法函数。
之后我们将so文件拖入到ida中。复制函数后的地址。
在ida中按G键,输入要跳转的地址。
为了不让游戏执行受到伤害函数,我们就将0x00624154处的STMFD SP!, {R4-R11,LR}汇编代码修改为BX LR即可!
对应的十六进制为1E FF 2F E1
即可达到人物不掉血的效果。