- 软件大小: 48KB
- 软件语言: 简体中文
- 软件类别: 国产软件 | 编译工具
- 运行环境: Xp/Vista/Win7/Win8/WinAll
- 授权方式: 免费版
- 软件等级:
- 更新时间: 2017/9/28 16:44:09
- 开 发 商:
软件介绍:
Il2CppDumper反编译工具 (unity游戏修改工具il2cppdumper)是一款unity游戏修改工具,通过利用这款工具,可以修改通过利用il2cpp编译的游戏文件,从而修改游戏中的属性数据。
软件介绍
原本这个程序只是为了理解Il2CppDumper的工作原理随便写的,毕竟有现成代码比自己翻il2cpp的源码要来的快。不过最近处理锁链战记3.0.2的时候发现原版的Il2CppDumper报错,unity_metadata_loader跑出来的地址也不对,于是只好把自己的这个程序重新翻出来完善了一下。
比起原版Il2CppDumper,自己的程序修复了field offset的错误,完善了type name部分的代码,添加了自动处理功能等等。其实还有很多东西可以完善,比如64位elf支持啦,parameter default value啦,stringLiteral啦等等,不过我到现在都还没碰过64位的elf文件,完全不懂怎么写(,而且我还是太懒了,再者大部分情况下只要知道method地址和field offset就好了,stringLiteral啥的反正都得开ida看代码,真要弄还是到时候写个py脚本比较好,所以就到此为止啦~
把libil2cpp.so,global-metadata.dat跟程序放在一起,双击运行,可以选择Manual模式需要手动输入两个参数的offset,具体参照这个,不过R0,R1是倒过来的别弄错了。或者选择Auto模式会自动寻找参数地址,当然只能对付正常编译的so,加了搅屎棍的肯定就不行啦。
Il2CppDumper使用教程锁链战记3.0版本也是换上了il2cpp,所以刚好就用它来写一篇简单的il2cpp修改教程
使用的是日服3.0.1版的锁链战记
首先要使用一款工具:Il2CppDumper,暑假pokemon go火起来的时候国外出现了一堆U3D的修改工具,这就是其中之一。这里推荐使用这个增加了交互功能的版本,可以省的自己重新编译。至于这工具具体功能我就懒得介绍了,反正往下看就知道啦~。
从apk解压出libil2cpp.so和global-metadata.dat,把libil2cpp.so丢进ida,等分析结束后,在左侧Functions window搜索il2cpp::vm::MetadataCache::Register
双击.plt那一行,在右侧可以看到一个引用,双击
可以看到这个
接下来把上面的Il2CppDumper和libil2cpp.so,global-metadata.dat放在一起,双击运行,分别输入上图的头两个offset,就是174E858和1739C10,等待几秒后就能生成dump.cs啦
修改
打开dump.cs看一眼,你大概就可以猜出Il2CppDumper的功能了。接下来就是找修改的位置,这里直接参考了我去年写的一篇文章,里面列举了非常基础的修改位置,可以看出修改攻击力的话就是修改CardInfo下的get_ATK函数的返回值,在dump.cs里搜索就能找到,右侧的值就是函数所在的位置啦
接下来就是修改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写进去就修改成功啦~
关键字: 游戏修改工具