unidbg console debugger 使用

android 逆向 10 / 37

const 龙哥 = Function() {}

const a = 全能的傻宝,每天都会换一种姿势来分享各种操作,最近 10 月在分享密码学;
const b = 点击加入星球;
return "无敌的龙哥";

前言

unidbg 是个非常好用的工具,可以模拟手机运行环境执行 so 文件,同时也非常适合算法还原
得益于它强大的 hook debugger 功能,我们今天的主角是 console debugger,简单介绍一下使用
想学习 unidbg 的小伙伴,可以 call 龙哥 ();

demo

这篇文章的样本是 搜狗搜索 app,不了解的同学,可以参考一下文章
sougou搜索 app weixin公众号文章列表 so 加解密算法分析还原 | 简单分析

推荐阅读

unidbg hook inline hook 使用

start

上面的文章已经分析到 so navite encrypt 加密函数了,最后也用 unidbg 成功跑了起来

0x1

前面遇到了个init函数,一般有经验的一眼就能看出是初始化函数,不知道的话,可以先通过分析代码确定
先来分析下 encrypt 函数

这里的 j_Sc_EncryptWallEncode 函数有点可疑,点进去瞧瞧

经过分析加密逻辑都在 EncryptWall::EncryptHttpRequest3 这函数里
但是这里的 byte_3A0C0 = 1 有点可疑,看看是个啥子

发现是个 .bss 节,bss 节里的数据都是未初始化的数据,在函数运行中才初始化,
这里的话就可以使用 unidbg 的内存监控这个字节的读写操作

0X2

unidbg console debugger 基本使用

emulator.traceWrite(module.base + 0x3a0c0, module.base + 0x3a0c0);

加上这段代码,运行

搜索 3a0c00xa27a 在该地址操作的,ida 中按 g 跳过去看看

这里赋值给 1,但是这个函数在哪里调用的呢,通过 x 可以查找到调用的地方,但是这里我们可以通过 unidbgconsole debugger 打印调用栈

// 初始化 debugger
debugger = emulator.attach(DebuggerType.CONSOLE);
// 添加一个断点
debugger.addBreakPoint(module.base + 0x0a27a);

初始化对象,并添加一个断点,执行代码

断点在 0x4000a27a 处断下来了,在下面输入 bt 指令,查看调用栈

往上翻可以看到是在 Java_com_sogou_scoretools_ScEncryptWall_init 这个函数里调用的,地址是 0x09a61 跳过去看看

现在大概明白了 init 的逻辑

0x3

回到 EncryptWall::EncryptHttpRequest3 函数处,点进去瞧瞧

得益于符号没去掉,可以清晰看到使用到的算法 rsa base64 aes
使用 unidbg console debugger 分析下 EncryptHttpRequest3 函数的参数

0xB300 处下个端点,运行代码

成功断下来 (百度 Google:根据ATPCS调用约定,R0-R3代表参数1234 后五个参数在栈中)
通过 m 指令查看寄存器的值

mr0 mr1 分别对应我们传的 参数一 参数二,使用 d 指令查看当前断点窗口信息

mr2 应该就是参数三了,mr3 应该是参数三的长度,可以修改参数验证一下,那后面的五个参数咋看呢,先查看 sp 寄存器的内存

sp 寄存器存的是堆栈数据,每四个字节就代表栈中的一个值,是小端序模式
参数五:0x40228000
参数六:0x40203000
参数七:0x40218040
参数八:0x00000000 = 0
参数九:0x00000040 = 0x40
分别看一下参数 五六七的 值

参数五是个 buffer,还没有数据

参数 六七 也不知道是个啥,不管了。

这里的话,主要是通过 m 指令查看内存,使用方式 m + [r0-r7|address] [后面还可以加上查看多少字节例如查看 0x20 32个字节]

Tips: 继续

可以在这里下个断点,瞧瞧结果是啥

先查看地址使用 b 指令添加一个端点,在使用 c 指令跳转到下一个断点

可以使用 vbs 查看全部的断点

使用 n 指令,单步执行

查看 mr0 内存的地址,没显示完再使用 mr0 0x100 查看 256 个字节数据

最后

以上就是常用的指令可以连续敲两下换行查看全部指令

暂无评论
本文作者:
本文链接: https://www.qinless.com/?p=470
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 qinless 的博客!
100

发表评论

返回顶部