小说xxxx2 version 1.5.10T
新手刚入门android手游,就想找个帖子复现一下,在52上找了个不错的帖子https://www.52pojie.cn/thread-1419648-1-1.html,但是版本太老了,新版改了很多,于是决定自己试试(毕竟就是个小厂的游戏)il2cppdumper使用,报错失败了,估计是global-metadata.dat加密了打开libil2cpp.so
[Asm] 纯文本查看 复制代码
1 2 3 4 5 | adb shell su cd /data/ local /tmp touch 1.so chmod 777 1.so |
之后使用frida
[JavaScript] 纯文本查看 复制代码
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 | var exports = Module.enumerateExportsSync( "libil2cpp.so" ); var libxx = Process.getModuleByName( "libil2cpp.so" ); console.log( "*****************************************************" ); console.log( "name: " +libxx.name); console.log( "base: " +libxx.base); console.log( "size: " +ptr(libxx.size)); var exports = Module.enumerateExportsSync( "libil2cpp.so" ); for ( var i = 0; i < exports.length; i++) { console.log(exports[i].name + ": " + (exports[i].address - libxx.base)); } // dump so var file_path = "/data/local/tmp/" + "1.so" ; var file_handle = new File(file_path, "wb" ); if (file_handle && file_handle != null ) { Memory.protect(ptr(libxx.base), libxx.size, 'rwx' ); var libso_buffer = ptr(libxx.base).readByteArray(libxx.size); file_handle.write(libso_buffer); file_handle.flush(); file_handle.close(); console.log( "[dump]:" , file_path); } |
再adb pull一下,就得到了解密好的so不过对于MetadataCache::Initialize函数,我也没仔细看,它对global-metadata.dat加了什么密,之后可以看看,拿到解密好的so,关键我就是想搜一下unity的版本
[C] 纯文本查看 复制代码
1 2 | #define GamePackageName "cs.xsjmn2.com" #define UnityVersion 2018.3.8f1 |
得到dump.cs之后找到get_money 和get_light函数 frida改一下就行了
[JavaScript] 纯文本查看 复制代码
01 02 03 04 05 06 07 08 09 10 11 12 13 | setImmediate( function (){ Interceptor.attach(Module.load( "libil2cpp.so" ).base.add(0x993338),{ onEnter: function (args){ // for(var i = 0 ; i < ) }, onLeave: function (retval){ //retval.replace(0xffff) retval.replace(0xffff) console.log( "get light :" + retval) } }) }) |
最终实现的功能