Il2Cpp反編譯工具是一款A(yù)PK反編譯工具,一般大家可以通過這款軟件來破解安卓軟件,或者對(duì)安卓軟件進(jìn)行修改。這款軟件主要針對(duì)unity l2cpp包的反編譯,如果你想修改某個(gè)單機(jī)手游或者程序,可以通過這款軟件來試試。
主要功能:
支持ELF, ELF64, Mach-O, PE和NSO格式
支持Metadata版本16, 19~24
導(dǎo)出包括types, fields, properties, methods, attributes
自動(dòng)生成IDA腳本
重命名函數(shù)
重命名并注釋Metadata
MakeFunction完善IDA分析
生成DummyDll
修改手游方法:
從apk解壓出libil2cpp.so和global-metadata.dat,把libil2cpp.so丟進(jìn)ida,等分析結(jié)束后,在左側(cè)Functions window搜索il2cpp::vm::MetadataCache::Register
雙擊.plt那一行,在右側(cè)可以看到一個(gè)引用,雙擊
可以看到這個(gè)
接下來把上面的Il2CppDumper和libil2cpp.so,global-metadata.dat放在一起,雙擊運(yùn)行,分別輸入上圖的頭兩個(gè)offset,就是174E858和1739C10,等待幾秒后就能生成dump.cs啦
修改
打開dump.cs看一眼,你大概就可以猜出Il2CppDumper的功能了。接下來就是找修改的位置,這里直接參考了我去年寫的一篇文章,里面列舉了非;A(chǔ)的修改位置,可以看出修改攻擊力的話就是修改CardInfo下的get_ATK函數(shù)的返回值,在dump.cs里搜索就能找到,右側(cè)的值就是函數(shù)所在的位置啦
接下來就是修改so,因?yàn)檫@就是個(gè)返回攻擊力int數(shù)值的函數(shù),所以修改思路就是讓它返回一個(gè)大值,這里il的代碼還是有點(diǎn)參考價(jià)值的,arm下也就是兩句話
mov r0,#0x19000 —> ldc.i4 0x19000
bx lr —> ret
注意arm里不是所有數(shù)都可以是立即數(shù)的,具體的就自行百度啦
接下來就把這兩句話轉(zhuǎn)換成HEX,用這個(gè)在線轉(zhuǎn)換網(wǎng)站,輸入上面兩段代碼,在ida里明顯可以看出代碼的間隔是4字節(jié),也就是32位,所以就選x32,點(diǎn)擊Convert后就可以得到HEX
190AA0E3
1EFF2FE1
接下來就在16進(jìn)制編輯器里,跳轉(zhuǎn)到偏移0x91ae50,把上面的HEX寫進(jìn)去就修改成功啦~