吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1908|回复: 6
收起左侧

[Android 求助] 被保护android游戏如何重新打包?

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

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

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

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
1024liu + 1 + 1 热心回复!

查看全部评分

608岁的老头 发表于 2021-1-28 17:32
[Python] 纯文本查看 复制代码
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[0];
      var num2 = args[1];
      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文件如果没有加密的花,用工具是可以看到方法名字和偏移
既然这样 ...

谢谢回复 我已经用il2cppdumper看到了方法名字和偏移,看来我还得解密
 楼主| 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
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 19:29

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表