ida 动态调试 android so 文件|基础入门环境搭建

android 逆向 20 / 38

仅供学习研究 。请勿用于非法用途,本人将不承担任何法律责任。

前言

之前学习了一段时间的 unidbg ,不得不说 unidbg console debug 是个非常强大的调试工具
但是也有缺点,那就是必须要先使用 unidbg 成功正确运行 目标样本 so 才行
于是就决定学习学习 ida 的动态调试

环境

Mac、ida pro 7.0、ddms、jdb、magisk
样本,既然是初学就拿个简单的 app 练手:之前分析过的 唯品会 OAuth api_sign

推荐阅读

ida 基本使用 常用快捷键

0x1 手机环境

需要手机安装 magisk 模块,修改全局为可调式模式
这里推荐一篇文章,点击查看
文章里提供四种方式,博主经过测试只有其中一种有效

getprop ro.debuggable
magisk resetprop ro.debuggable 1
getprop ro.debuggable
stop;start

依次执行以上命令,最后一定要执行 stop;start 重启,否则不生效

0x2 电脑环境

手机配置完后,电脑上打开 ddms

界面上看到了很多的手机进程,但是我们今天的这个样本因为没有反调试,所以用不到 ddms 这里也就是说一下

0x3 ida 调试准备

手机上打开 唯品会,使用 ida 打开目标 app 的 so 文件,前面分析过 so 这里就不细说了

getByteHash 函数的开头结尾,先下断点

是在汇编处下端点,不是 c 伪代码

然后运行 android_serevr 文件

adb forward 转发端口

0x4 ida attach

选择这个

主要勾选这三项

点击 Process Option

设置 ip port

点击 attach to process

搜索唯品会进程,双击

成功断下,断在了 libcf9,手机上随便点击下,触发调用 so

然后就成功断在了我们刚刚下的端点

下面的窗口,右键同步下 r2 寄存器的数据,也就是参数三,看到一些 url 相关的数据,继续 f9

来到函数的最后,同步 r4 的数据,这就是第一次 hash 的加密结果了,先记录下 a7b3aa65d5b5ea89777c533a5edccdad204d6466

继续 f9,同步 r2 的数据, 第二次加密的参数,正是 salt + 第一次解密结果

f9 两次加密执行完成,图内就是最终的结果了

最后

样本就分析到这里了,算是 ida 动态调试,基本入门了

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

发表评论

返回顶部