Android 5.0 + IDA 6.8 调试经验分享

现在升级快,网上的资料只能做参考。
学到了NDK逆向这一块,昨天为了能让IDA 能动态调试SO,瞎折腾了很久,这里分享一下我的经验。

工具:
IDA pro 6.8
Android 5.x

IDA 6.8 在看雪吾爱应该都能找到下载地址。
我的手机是三星 on7 Android 5.1系统。
以前我一直用的是IDA 6.6,群里人说5.0以上的系统要用6.8…
在启动android_server 服务的时候遇到下面这种情况有可能就是IDA的版本不对了。
这里写图片描述
下面开始正式写,内容可能有些重复。
0x0: 将IDA pro 6.8 目录下的\dbgsrv\android_server 上传到手机 /data/local/tmp 目录下。
具体命令:
adb push \dbgsrv\android_server /data/local/tmp/android_server // 上传 \dbgsrv\android_server 根据自己实际情况修改
adb shell // 得到Android系统的shell,下面是在Shell中的操作
su //获得Root权限
cd /data/local/tmp
chmod 755 android_server // 修改android_server权限 rwxr-xr-x
./android_server //运行
这个CMD不要关了。
这里写图片描述

0x1 : 开启端口转发
另外打开一个cmd
adb forward tcp:23946 tcp:23946

0x2: 操作IDA
打开IDA ->Debugger->Attach->Remote ARMLinux/Anroid debugger
Hostname 就是Anroid机的主机地址,一般和电脑都在一个局域网吧? 填写Android主机的ip地址。端口默认即可。
完成后按下 Ok。
这里写图片描述

按下Ok后会出现一个进程列表,选择你要调试的进程。
附件里有一个So例子,先在Android机上运行起,然后在刷新IDA的进程列表。
进程太多的话,可以用包名关键字搜索。
附加后调试器会停在一个地方,先让程序跑起来吧,因为我们调试的是So模块。

如何调试XX模块?例子以附件中的Apk为例子
从这里调出模块窗口
从这里调出模块窗口。

这里写图片描述
模块很多,你需要知道你要调试的是什么模块,用搜索功能会方便很多。
这里写图片描述
这个就是例子中要调试的模块,用Android Killer分析出来的。
在Module List窗口中双击欲调试的模块,会看到模块的导出函数。
这里写图片描述
假如要调试 getCoin这个函数。 双击getCoin,就进入了函数的汇编代码界面。
这里写图片描述
单击红色圆圈中的蓝色原点就能下断点。 我们需要修改这个函数的返回值,来达到修改金钱的目的,所以在 BX LR 这一行下断点。
当IDA停下来后,就可以在寄存器窗口修改R0寄存器的值。
全剧终。

一些小问题的非专业解答:
0x0:
这里写图片描述
1、手机没有Root
2、运行android_server 前请先su一下

0x1:
这里写图片描述
IDA 6.8目录下,运行idaq.exe

0x2:
这里写图片描述
,,, 换真机,模拟器不行。

0x3:
这里写图片描述
版本不对,升级IDA,或者在手机上刷一个低版本的系统。

记住:
一定要Root,一定要Su,一定要改权限

例子下载:http://pan.baidu.com/s/1i3wzetf
参考文章:
如何使用ida在apk执行前动态调试其so中的函数
http://bbs.pediy.com/showthread.php?t=178659

一步步搭建ida pro动态调试SO环境。
http://bbs.pediy.com/showthread.php?t=203080

菜鸟总结so分析,arm 汇编,IDA静态分析
http://www.pd521.com/thread-790-1-1.html

  • 3
    点赞
  • 1
    收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:编程工作室 设计师:CSDN官方博客 返回首页
评论 4

打赏作者

PandaOS

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值