aaaaf 发表于 2021-12-14 22:06

一款某小手游的逆向修改

小说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)
    }
})
})最终实现的功能

aaaaf 发表于 2021-12-15 14:38

mscsky 发表于 2021-12-15 10:28
得到dump.cs之后找到get_money 和get_light函数 frida改一下就行了
是什么操作啊

得到cs后,就知道那两个函数的地址了,于是可以用frida hook,修改这两个函数的返回值

mscsky 发表于 2021-12-15 16:13

aaaaf 发表于 2021-12-15 14:38
得到cs后,就知道那两个函数的地址了,于是可以用frida hook,修改这两个函数的返回值

这样实际没有修改so文件吧

489621 发表于 2021-12-15 09:04

这什么游戏

Check1998 发表于 2021-12-15 09:39

没玩过的游戏,不错

chaifengbox 发表于 2021-12-15 09:55

好像是什么 小说什么的游戏. 我之前玩过.

oranges 发表于 2021-12-15 10:14

值得学习1!

mscsky 发表于 2021-12-15 10:28

得到dump.cs之后找到get_money 和get_light函数 frida改一下就行了
是什么操作啊

xcoogg 发表于 2021-12-15 11:42

值得学习,不一样的思路

ws610001969 发表于 2021-12-15 12:16

谢谢分享,收藏了

wantwill 发表于 2021-12-15 12:49


值得学习1!

xyz1234 发表于 2021-12-15 13:04

谢谢分享,收藏了
页: [1] 2 3 4 5 6 7
查看完整版本: 一款某小手游的逆向修改