吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7430|回复: 30
上一主题 下一主题
收起左侧

[Android 原创] cocos2dx游戏逆向实战 IDA 7.6 安卓9 动态调试so库

  [复制链接]
跳转到指定楼层
楼主
BeneficialWeb 发表于 2022-5-15 12:25 回帖奖励

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

一、调试准备

1. 工具列表

IDA Pro 7.6

安卓 9

com.legend.test 传奇手游

2. IDA调试环境

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

PS K:\ReverseTools\Debuggers\IDA 7.6\dbgsrv> adb devices
List of devices attached
c770c5760305    device
PS K:\ReverseTools\Debuggers\IDA 7.6\dbgsrv> 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:\ReverseTools\Debuggers\IDA 7.6\dbgsrv> 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:\ReverseTools\Debuggers\IDA 7.6\dbgsrv> adb forward tcp:23964 tcp:23964
23964
PS K:\ReverseTools\Debuggers\IDA 7.6\dbgsrv> adb forward tcp:23946 tcp:23946
23946
PS K:\ReverseTools\Debuggers\IDA 7.6\dbgsrv> adb forward --list
c770c5760305 tcp:53883 localabstract:AndroidStudioTransport
c770c5760305 tcp:23964 tcp:23964
c770c5760305 tcp:23946 tcp:23946

PS K:\ReverseTools\Debuggers\IDA 7.6\dbgsrv> adb forward --remove tcp:23964
PS K:\ReverseTools\Debuggers\IDA 7.6\dbgsrv> adb forward --list
c770c5760305 tcp:53883 localabstract:AndroidStudioTransport
c770c5760305 tcp:23946 tcp:23946

二、游戏分析

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

D5D63C

手机上启动游戏进程。

三、打开IDA

选择附加到远程Android 调试器

然后接下来填入localhost

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

调试成功进入这个界面后

ctrl+s 查找so库代码段。

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

libcocos2dcpp.so    0000007065893000    000000706685A000    R   .   X   D   .   byte    00  public  CODE    64  00  00

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

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

再切换到反汇编模式

记录下这个偏移

D62588

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

70665F5588

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

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

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

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

libcocos2dcpp.so    00000070657CA000    0000007066791000    R   .   X   D   .   byte    00  public  CODE    64  00  00

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

经过单步调试对比

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

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

X3是脚本的名称。

X1是解密后的代码

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

检查hook代码

libcocos2dcpp.so    0000007065787000    0000007066D56000    R   .   X   D   .   byte    00  public  CODE    64  00  00
D578D8

hook后游戏界面进不去了。

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

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

免费评分

参与人数 12威望 +2 吾爱币 +62 热心值 +11 收起 理由
qtfreet00 + 2 + 52 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
759611050 + 1 + 1 我很赞同!
ak47159754 + 1 + 1 我很赞同!
nevinhappy + 1 + 1 用心讨论,共获提升!
dialga + 1 + 1 谢谢@Thanks!
chevin + 1 + 1 用心讨论,共获提升!
笙若 + 1 + 1 谢谢@Thanks!
mouccc + 1 + 1 热心回复!
幽幽洛 + 1 谢谢@Thanks!
vonfly + 1 我很赞同!
LoveHack + 1 + 1 用心讨论,共获提升!
yyb414 + 1 + 1 热心回复!

查看全部评分

本帖被以下淘专辑推荐:

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

沙发
白云点缀的蓝 发表于 2022-5-15 12:42
楼主有分析过保卫萝卜3嘛
头像被屏蔽
3#
sqxiaoer 发表于 2022-5-15 13:06
4#
metoo2 发表于 2022-5-15 14:14
5#
幽幽洛 发表于 2022-5-15 16:52
感谢分享
6#
裴冰夏 发表于 2022-5-15 17:33
它没有壳嘛 可以直接调试so
7#
tudouzmd 发表于 2022-5-15 19:34
加油,欧力给
8#
积积 发表于 2022-5-15 21:56
两天分析一个游戏,下一个分析那个
9#
zhaoduck 发表于 2022-5-15 22:18
大佬,怎么提取加密的key值呢
10#
zhouzheng1201 发表于 2022-5-16 00:15
牛逼啊啊啊啊
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-24 07:02

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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