Il2Cpp反編譯工具是一款APK反編譯工具,一般大家可以通過這款軟件來破解安卓軟件,或者對安卓軟件進行修改。這款軟件主要針對unity l2cpp包的反編譯,如果你想修改某個單機手游或者程序,可以通過這款軟件來試試。
主要功能:
支持ELF, ELF64, Mach-O, PE和NSO格式
支持Metadata版本16, 19~24
導出包括types, fields, properties, methods, attributes
自動生成IDA腳本
重命名函數(shù)
重命名并注釋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的功能了。接下來就是找修改的位置,這里直接參考了我去年寫的一篇文章,里面列舉了非;A的修改位置,可以看出修改攻擊力的話就是修改CardInfo下的get_ATK函數(shù)的返回值,在dump.cs里搜索就能找到,右側的值就是函數(shù)所在的位置啦
接下來就是修改so,因為這就是個返回攻擊力int數(shù)值的函數(shù),所以修改思路就是讓它返回一個大值,這里il的代碼還是有點參考價值的,arm下也就是兩句話
mov r0,#0x19000 —> ldc.i4 0x19000
bx lr —> ret
注意arm里不是所有數(shù)都可以是立即數(shù)的,具體的就自行百度啦
接下來就把這兩句話轉換成HEX,用這個在線轉換網(wǎng)站,輸入上面兩段代碼,在ida里明顯可以看出代碼的間隔是4字節(jié),也就是32位,所以就選x32,點擊Convert后就可以得到HEX
190AA0E3
1EFF2FE1
接下來就在16進制編輯器里,跳轉到偏移0x91ae50,把上面的HEX寫進去就修改成功啦~