Il2Cpp反编译工具是一款APK反编译工具,一般大家可以通过这款软件来破解安卓软件,或者对安卓软件进行修改。这款软件主要针对unity l2cpp包的反编译,如果你想修改某个单机手游或者程序,可以通过这款软件来试试。
支持ELF, ELF64, Mach-O, PE和NSO格式
支持Metadata版本16, 19~24
导出包括types, fields, properties, methods, attributes
自动生成IDA脚本
重命名函数
重命名并注释Metadata
MakeFunction完善IDA分析
生成DummyDll
从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写进去就修改成功啦~