一款某小手游的逆向修改
小说xxxx2 version 1.5.10T新手刚入门android手游,就想找个帖子复现一下,在52上找了个不错的帖子https://www.52pojie.cn/thread-1419648-1-1.html,但是版本太老了,新版改了很多,于是决定自己试试(毕竟就是个小厂的游戏)il2cppdumper使用,报错失败了,估计是global-metadata.dat加密了打开libil2cpp.so看到这函数名和 这么多数据没反编译,第一反应 混淆加壳了,于是去看看init_array里面还有好多xor,各种加减 忙猜应该是smc 加壳混淆了 而且搜索字符长“global-metadata.dat” ,根本没有,估计是字符串混淆了,但是这个字符串是一定要的,否则不可能MetadataCache::Initialize加载资源阿,所以肯定解密,既然如此,那我就去内存里dump不久好了,frida启动(居然没有反调试)(由于权限问题, 我属实懒得搞,就这么应付一下)adb shell
su
cd /data/local/tmp
touch 1.so
chmod 777 1.so之后使用fridavar 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.name + ": " + (exports.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(":", file_path);
}再adb pull一下,就得到了解密好的so不过对于MetadataCache::Initialize函数,我也没仔细看,它对global-metadata.dat加了什么密,之后可以看看,拿到解密好的so,关键我就是想搜一下unity的版本之后使用Riru-Il2CppDumper改一下包名和版本 magisk再装一下#define GamePackageName "cs.xsjmn2.com"
#define UnityVersion 2018.3.8f1得到dump.cs之后找到get_money 和get_light函数 frida改一下就行了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)
}
})
})最终实现的功能 mscsky 发表于 2021-12-15 10:28
得到dump.cs之后找到get_money 和get_light函数 frida改一下就行了
是什么操作啊
得到cs后,就知道那两个函数的地址了,于是可以用frida hook,修改这两个函数的返回值 aaaaf 发表于 2021-12-15 14:38
得到cs后,就知道那两个函数的地址了,于是可以用frida hook,修改这两个函数的返回值
这样实际没有修改so文件吧 这什么游戏 没玩过的游戏,不错 好像是什么 小说什么的游戏. 我之前玩过. 值得学习1! 得到dump.cs之后找到get_money 和get_light函数 frida改一下就行了
是什么操作啊 值得学习,不一样的思路 谢谢分享,收藏了
值得学习1! 谢谢分享,收藏了