cocos2dx游戏逆向实战 IDA 7.6 安卓9 动态调试so库

admin 2022年5月18日11:20:17评论997 views字数 2648阅读8分49秒阅读模式

cocos2dx游戏逆向实战 IDA 7.6 安卓9 动态调试so库

一、调试准备

1. 工具列表

IDA Pro 7.6

安卓 9

com.legend.test 传奇手游

2. IDA调试环境

将adb所在目录添加环境变量到PATH, E:Androidplatform-tools

 复制代码 隐藏代码
PS K:ReverseToolsDebuggersIDA 7.6dbgsrv> adb devices
List of devices attached
c770c5760305    device
PS K:ReverseToolsDebuggersIDA 7.6dbgsrv> adb push .android_server64 /data/local/tmp
.android_server64: 1 file pushed, 0 skipped. 76.1 MB/s (1236288 bytes in 0.016s)

运行android_server64服务

 复制代码 隐藏代码
PS K:ReverseToolsDebuggersIDA 7.6dbgsrv> adb shell
sakura:/ $ su
sakura:/ # cd /data/local/t
tmp/     traces/
sakura:/ # cd /data/local/tmp
sakura:/data/local/tmp # ll
/system/bin/sh: ll: not found
127|sakura:/data/local/tmp # ls -lh
total 14M
-rw-rw-rw- 1 shell shell 1.1M 2021-04-27 17:41 android_server64
-rwxrwxrwx 1 shell shell  28M 2022-03-19 08:22 lldb-server
drwxrwxrwx 5 shell shell 4.0K 2022-05-14 13:47 perfd
-rwxrwxrwx 1 shell shell 1.3K 2022-03-19 08:22 start_lldb_server.sh
sakura:/data/local/tmp # chmod 777 android_server64
sakura:/data/local/tmp # /data/local/tmp/android_server64
IDA Android 64-bit remote debug server(ST) v7.6.27. Hex-Rays (c) 2004-2021
Listening on 0.0.0.0:23946...

端口转发相关操作

 复制代码 隐藏代码
PS K:ReverseToolsDebuggersIDA 7.6dbgsrv> adb forward tcp:23964 tcp:23964
23964
PS K:ReverseToolsDebuggersIDA 7.6dbgsrv> adb forward tcp:23946 tcp:23946
23946
PS K:ReverseToolsDebuggersIDA 7.6dbgsrv> adb forward --list
c770c5760305 tcp:53883 localabstract:AndroidStudioTransport
c770c5760305 tcp:23964 tcp:23964
c770c5760305 tcp:23946 tcp:23946

PS K:ReverseToolsDebuggersIDA 7.6dbgsrv> adb forward --remove tcp:23964
PS K:ReverseToolsDebuggersIDA 7.6dbgsrv> adb forward --list
c770c5760305 tcp:53883 localabstract:AndroidStudioTransport
c770c5760305 tcp:23946 tcp:23946

二、游戏分析

将lua的游戏so库拖入IDA,cocos2dx游戏加载lua都会走cocos2dx_lua_loader,记录下这个函数地址的偏移:

cocos2dx游戏逆向实战 IDA 7.6 安卓9 动态调试so库

 复制代码 隐藏代码
D5D63C

手机上启动游戏进程。

三、打开IDA

选择附加到远程Android 调试器

cocos2dx游戏逆向实战 IDA 7.6 安卓9 动态调试so库

然后接下来填入localhost

cocos2dx游戏逆向实战 IDA 7.6 安卓9 动态调试so库

搜索对应进程的名字,点击附加操作

cocos2dx游戏逆向实战 IDA 7.6 安卓9 动态调试so库

调试成功进入这个界面后

cocos2dx游戏逆向实战 IDA 7.6 安卓9 动态调试so库

ctrl+s 查找so库代码段。

cocos2dx游戏逆向实战 IDA 7.6 安卓9 动态调试so库

可以看到这里有三个代码段, 选择第一个。

 复制代码 隐藏代码
libcocos2dcpp.so    0000007065893000    000000706685A000    R   .   X   D   .   byte    00  public  CODE    64  00  00

start加上我们刚才的偏移量后70665F063C,跳转过去,可以看见函数名就是cocos2dx_lua_loader

cocos2dx游戏逆向实战 IDA 7.6 安卓9 动态调试so库

此时我们再开一个IDA 7.6 Pro 查看静态分析完成的so。找到luaLoadBuffer

cocos2dx游戏逆向实战 IDA 7.6 安卓9 动态调试so库

再切换到反汇编模式

cocos2dx游戏逆向实战 IDA 7.6 安卓9 动态调试so库

记录下这个偏移

 复制代码 隐藏代码
D62588

切到动态调试的IDA,计算地址后跳转过去。

 复制代码 隐藏代码
70665F5588

cocos2dx游戏逆向实战 IDA 7.6 安卓9 动态调试so库

在这里我们下一个断点,往上看,我们会看到一个跳转。

cocos2dx游戏逆向实战 IDA 7.6 安卓9 动态调试so库

x引用后,在跳转处也下一个断点。

cocos2dx游戏逆向实战 IDA 7.6 安卓9 动态调试so库

此时我们可以F9运行进程了。

点击进入游戏,就能断下来。刚断下来时屏幕闪了。不知道为什么

 复制代码 隐藏代码
libcocos2dcpp.so    00000070657CA000    0000007066791000    R   .   X   D   .   byte    00  public  CODE    64  00  00

重连后,再计算一次。706652C588

经过单步调试对比

cocos2dx游戏逆向实战 IDA 7.6 安卓9 动态调试so库

他走的是后面两个函数的流程,不是xxtea_decrypt。

cocos2dx游戏逆向实战 IDA 7.6 安卓9 动态调试so库

经过调试,发现lua走的不是xxtea的流程,走的是ZipUtil的流程。

cocos2dx游戏逆向实战 IDA 7.6 安卓9 动态调试so库

X3是脚本的名称。

X1是解密后的代码

luaL_loadbuffer确实被调用了,但是LSPosed hook时会出问题。

cocos2dx游戏逆向实战 IDA 7.6 安卓9 动态调试so库

检查hook代码

 复制代码 隐藏代码
libcocos2dcpp.so    0000007065787000    0000007066D56000    R   .   X   D   .   byte    00  public  CODE    64  00  00
D578D8

cocos2dx游戏逆向实战 IDA 7.6 安卓9 动态调试so库

hook后游戏界面进不去了。

cocos2dx游戏逆向实战 IDA 7.6 安卓9 动态调试so库


cocos2dx游戏逆向实战 IDA 7.6 安卓9 动态调试so库

cocos2dx游戏逆向实战 IDA 7.6 安卓9 动态调试so库

cocos2dx游戏逆向实战 IDA 7.6 安卓9 动态调试so库

在多层调用的情况下,导致hook出了问题。重新调整思路,hook更底层的函数luaL_loadbufferx,hook不再出现问题。

cocos2dx游戏逆向实战 IDA 7.6 安卓9 动态调试so库

至此,工作结束,喜获另外源码一套。

cocos2dx游戏逆向实战 IDA 7.6 安卓9 动态调试so库

该内容转载自网络,更多内容请点击“阅读原文”

cocos2dx游戏逆向实战 IDA 7.6 安卓9 动态调试so库

原文始发于微信公众号(web安全工具库):cocos2dx游戏逆向实战 IDA 7.6 安卓9 动态调试so库

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年5月18日11:20:17
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   cocos2dx游戏逆向实战 IDA 7.6 安卓9 动态调试so库http://cn-sec.com/archives/1017632.html

发表评论

匿名网友 填写信息