首页
社区
课程
招聘
[原创]Android 5.0 + IDA 6.8 调试经验分享
发表于: 2016-1-31 13:23 14831

[原创]Android 5.0 + IDA 6.8 调试经验分享

2016-1-31 13:23
14831

1、手机没有Root
2、运行android_server 前请先su一下

0x1:

IDA 6.8目录下,运行idaq.exe

0x2:

,,, 换真机,模拟器不行。

0x3:

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

工具:
IDA pro 6.8
Android 5.x

我的手机是三星 on7 Android 5.1系统。
以前我一直用的是IDA 6.6,群里人说5.0以上的系统要用6.8…
在启动android_server 服务的时候遇到下面这种情况有可能就是IDA的版本不对了。

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

工具:
IDA pro 6.8
Android 5.x

我的手机是三星 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窗口中双击欲调试的模块,会看到模块的导出函数。

下面开始正式写,内容可能有些重复。
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。

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窗口中双击欲调试的模块,会看到模块的导出函数。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2019-9-30 17:12 被kanxue编辑 ,原因:
上传的附件:
收藏
免费 3
支持
分享
最新回复 (14)
雪    币: 6
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
谢谢楼主分享技术贴。
2016-1-31 13:41
0
雪    币: 341
活跃值: (143)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
3
看了下是基础呀 谢谢分享
2016-1-31 14:07
0
雪    币: 55
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
TAE
4
谢谢分享~
2016-1-31 18:51
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
谢谢分享!
2016-2-1 09:35
0
雪    币: 57
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
谢谢分享,本人菜鸟一个
2016-2-1 13:04
0
雪    币: 5596
活跃值: (2173)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
很实用,感谢分享!
2016-2-1 13:43
0
雪    币: 35
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
谢谢楼主分享啊。真是厉害啊!!
2016-2-6 10:14
0
雪    币: 27
活跃值: (622)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
9
感谢分享
2016-2-6 22:06
0
雪    币: 128
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
感谢分享!
2016-2-17 10:28
0
雪    币: 65
活跃值: (17)
能力值: ( LV3,RANK:35 )
在线值:
发帖
回帖
粉丝
11
感谢分享!
2016-2-23 15:43
0
雪    币: 193
活跃值: (1215)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
收下了啊
2016-3-7 20:54
0
雪    币: 258
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
谢谢楼主分享。。。学习了
2017-2-24 14:23
0
雪    币: 230
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
15
学到了学到了
2020-11-24 15:31
0
雪    币: 241
活跃值: (24)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
非常好  感谢这么好的教程
2020-12-4 09:35
0
游客
登录 | 注册 方可回帖
返回
//