超简单的il2cpp游戏修改教程

锁链战记3.0版本也是换上了il2cpp,所以刚好就用它来写一篇简单的il2cpp修改教程
使用的是日服3.0.1版的锁链战记

首先要使用一款工具:Il2CppDumper,暑假pokemon go火起来的时候国外出现了一堆U3D的修改工具,这就是其中之一。这里推荐使用这个增加了交互功能的版本,可以省的自己重新编译。至于这工具具体功能我就懒得介绍了,反正往下看就知道啦~。

使用Il2CppDumper

从apk解压出libil2cpp.soglobal-metadata.dat,把libil2cpp.so丢进ida,等分析结束后,在左侧Functions window搜索il2cpp::vm::MetadataCache::Register
超简单的il2cpp游戏修改教程_第1张图片
双击.plt那一行,在右侧可以看到一个引用,双击超简单的il2cpp游戏修改教程_第2张图片可以看到这个qq%e6%88%aa%e5%9b%be20161206175145
接下来把上面的Il2CppDumperlibil2cpp.soglobal-metadata.dat放在一起,双击运行,分别输入上图的头两个offset,就是174E8581739C10,等待几秒后就能生成dump.cs啦

修改

打开dump.cs看一眼,你大概就可以猜出Il2CppDumper的功能了。接下来就是找修改的位置,这里直接参考了我去年写的一篇文章,里面列举了非常基础的修改位置,可以看出修改攻击力的话就是修改CardInfo下的get_ATK函数的返回值,在dump.cs里搜索就能找到,右侧的值就是函数所在的位置啦
qq%e6%88%aa%e5%9b%be20161206180421
接下来就是修改so,因为这就是个返回攻击力int数值的函数,所以修改思路就是让它返回一个大值,这里il的代码还是有点参考价值的,arm下也就是两句话
mov r0,#0x19000  —>  ldc.i4 0x19000
bx lr                       —>  ret
注意arm里不是所有数都可以是立即数的,具体的就自行百度啦
接下来就把这两句话转换成HEX,用这个在线转换网站,输入上面两段代码,在ida里明显可以看出代码的间隔是4字节,也就是32位,所以就选x32,点击Convert后就可以得到HEX
190AA0E3
1EFF2FE1
接下来就在16进制编辑器里,跳转到偏移0x91ae50,把上面的HEX写进去就修改成功啦~

你可能感兴趣的:(手游逆向与保护)