1024liu 发表于 2021-1-28 16:50

被保护android游戏如何重新打包?

我这几天在做一游戏的逆向,这是一个u3d il2cpp封装的游戏。我发现它是被保护的,就用gameguardian提取,得到了代码(libil2cpp.so)。可是现在我应该如何重新打包回去?原安装包里是一个被保护的,所以我不能直接替换原文件{:301_1008:}眼看着离成功只有一步之遥,我应该怎么办?

608岁的老头 发表于 2021-1-28 17:29

还是要回到so进行解密

608岁的老头 发表于 2021-1-28 17:31

不过你既然已经获取到了libil2cpp.so,bat文件如果没有加密的花,用工具是可以看到方法名字和偏移
既然这样可以用hook进行修改推荐用frida

608岁的老头 发表于 2021-1-28 17:32

import frida#导入frida模块
import sys    #导入sys模块

jscode = """
function get_func_addr(module, offset) {

   var base_addr = Module.findBaseAddress(module);
   console.log("base_addr: " + base_addr);

   console.log(hexdump(ptr(base_addr), {
            length: 16,
            header: true,
            ansi: true
      }))

   var func_addr = base_addr.add(offset);
   if (Process.arch == 'arm')
      console.log(“32位”);
      return func_addr.add(1);//如果是32位地址+1
   else
      console.log(“64位”);
      return func_addr;
}

var func_addr = get_func_addr('libil2cpp.so', 0x1A3A2F8);
console.log('func_addr: ' + func_addr);

console.log(hexdump(ptr(func_addr), {
            length: 16,
            header: true,
            ansi: true
      }))

Interceptor.attach(ptr(func_addr), {
   onEnter: function(args) {

      console.log("onEnter");
      var num1 = args;
      var num2 = args;
      console.log("num1: " + num1);
      console.log("num2: " + num2);

   },
   onLeave: function(retval) {

      console.log(retval);
      //retval.replace(true);//返回值替换成3
   }
});
"""

def on_message(message,data): #js中执行send函数后要回调的函数
    print(message)

process = frida.get_remote_device().attach('') #得到设备并劫持进程com.example.testfrida(该开始用get_usb_device函数用来获取设备,但是一直报错找不到设备,改用get_remote_device函数即可解决这个问题)
script = process.create_script(jscode) #创建js脚本
script.on('message',on_message) #加载回调函数,也就是js中执行send函数规定要执行的python函数
script.load() #加载脚本
sys.stdin.read()

1024liu 发表于 2021-1-28 17:48

608岁的老头 发表于 2021-1-28 17:31
不过你既然已经获取到了libil2cpp.so,bat文件如果没有加密的花,用工具是可以看到方法名字和偏移
既然这样 ...

谢谢回复 {:1_893:} 我已经用il2cppdumper看到了方法名字和偏移,看来我还得解密:wwqwq

1024liu 发表于 2021-1-28 17:54

608岁的老头 发表于 2021-1-28 17:29
还是要回到so进行解密

但是我有个问题:安装包里被保护的程序和dump的程序完全不一样,被保护的程序都是些基础函数之类的。那么加密的代码在哪?解密程序又在哪?

608岁的老头 发表于 2021-1-28 18:17

1024liu 发表于 2021-1-28 17:54
但是我有个问题:安装包里被保护的程序和dump的程序完全不一样,被保护的程序都是些基础函数之类的。那么 ...

我不是说了吗,解密的方法在so里,具体在哪个so里面你可以看看源码,网上有一大片,游戏在启动之后先调用含有解密方法的so,libil2cpp.so先解密成你dump出来的代码,然后再加载libil2cpp.so
页: [1]
查看完整版本: 被保护android游戏如何重新打包?