首页
社区
课程
招聘
[原创]IDA调试dex代码初体验
发表于: 2014-6-9 17:17 92033

[原创]IDA调试dex代码初体验

2014-6-9 17:17
92033

IDA 6.6新添加了对dex文件的调试支持,由于工作原因,我第一时间拿到了这个版本,下面就是针对这个功能的一些简单体验。
IDA对这个新功能提供了一个PDF文档进行说明,按照教程一步步来就可以完成对例子程序的调试,我这里选sina微博作例子简单讲一下实际调试的流程。
准备工作
根据android的官方文档,如果要调试一个App里面的dex代码,必须满足以下两个条件中的任何一个:
1)  App的AndroidManifest.xml中Application标签包含属性android:debuggable=true
2)  /default.prop中ro.debuggable的值为1
由于正常的软件发布时都不会把android:debuggable设置为true,所以要达成条件1)需要对app进行重新打包,这不仅每次分析一个App都重复操作,而且很多软件会对自身进行校验,重打包后执行会被检测到,所以想办法满足第2)个条件是个一劳永逸的办法,我实际使用的方法就是满足第二个条件。由于default.prop是保存在boot.img的ramdisk中,这部分每次重新启动都会重新从rom中加载,所以要到目的必须修改boot.img中的ramdisk并重新刷到设备中。我测试使用的设备为Nexus 7,修改步骤如下:
a)  从Google官方网站下载到boot.img,
b)  使用工具(abootimg,gunzip, cpio)把boot.img完全解开,获取到default.prop
c)  修改default.prop
d)  把修改后的文件重新打包成boot_new.img
e)  使用fastboot工具把boot_new.img刷入设备(fastboot flash boot boot_new.img)

图1 修改后的default.prop内容
实际调试
解压缩sina微博的apk,把dex文件拖到ida中进行分析(非常慢,文件会到6G多,估计IDA的dex加载器有BUG),分析完成后按照IDA的教程对Debugger Options进行设置。

图2 Debugger Options设置

设置后找到App的入口Activity——.SplashActivity, 在SplashActivity_OnCreate方法设置断点.

图3 sina微博入口Activity定义


图4 在SpalshActivity的OnCreate方法设置断点
点击执行或者按F9即可开始运行App,由于在入口Activity的OnCreate方法设置了断点,所以App执行后就会停在刚才设置的断点处等待用户操作。

图5 执行后程序中断在设置的断点处


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

上传的附件:
收藏
免费 3
支持
分享
最新回复 (71)
雪    币: 2664
活跃值: (3401)
能力值: ( LV13,RANK:1760 )
在线值:
发帖
回帖
粉丝
2
mark...
2014-6-9 17:20
0
雪    币: 138
活跃值: (475)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
期待 ida debug  kernel

现在 debug android kernel 没发现啥好方法  愁人~
2014-6-9 17:26
0
雪    币: 435
活跃值: (172)
能力值: ( LV13,RANK:280 )
在线值:
发帖
回帖
粉丝
4
大厂的设备很多有usb-uart口,可以看到log,大厂的开源一般也都OK,可以自己编译然后从UART口看log
2014-6-9 17:42
0
雪    币: 59
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我在root权限下修改 将/default.prop中ro.debuggable的值设为1,在不重启手机的情况下,能否调试apk
2014-6-10 11:19
0
雪    币: 107
活跃值: (404)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
学习...今天就试试..谢谢楼主分享
2014-6-10 14:41
0
雪    币: 381
活跃值: (140)
能力值: ( LV13,RANK:330 )
在线值:
发帖
回帖
粉丝
7
单步调试太慢,那些smali指令也没必要去分析跟进,个人觉得目前最实用的就重打包加LOG
2014-6-10 15:11
0
雪    币: 435
活跃值: (172)
能力值: ( LV13,RANK:280 )
在线值:
发帖
回帖
粉丝
8
不行,这个设置是系统启动的时候初始化很多东西用的,启动后再改就不生效了
2014-6-10 15:18
0
雪    币: 745
活跃值: (3823)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
thank you  for share,mark it.
2014-6-10 16:43
0
雪    币: 111
活跃值: (211)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
可以调试了,不过f7容易跑飞,f8好点
2014-6-10 19:54
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
求ida pro 6.6 破解版
2014-6-15 18:12
0
雪    币: 193
活跃值: (1220)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
6.6很高级啊,学习一下了
2014-6-16 08:57
0
雪    币: 28
活跃值: (51)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
13
有个简单投机取巧的方法(详见附件源代码)不用重制ROM也可达成2,已经用了很久了。
执行后可以写ro属性,然后重启zygote即可。
上传的附件:
2014-6-16 10:24
0
雪    币: 118
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
个人觉得还是log合适,ida的这个功能有点哗众取宠。
2014-6-16 17:05
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
楼主,哪里能搞到ida6.6呢
2014-6-17 16:50
0
雪    币: 51
活跃值: (48)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
16
       去万能的淘宝搜搜~!
2014-6-17 23:11
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
太慢了吧,请问楼主加载dex用了多长时间?
2014-6-19 17:15
0
雪    币: 435
活跃值: (172)
能力值: ( LV13,RANK:280 )
在线值:
发帖
回帖
粉丝
18
这个问题已经报告给IDA了,他们后续回发布修正的
2014-6-24 11:50
0
雪    币: 230
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
19
[QUOTE='火翼[CCG];1295548']这个问题已经报告给IDA了,他们后续回发布修正的[/QUOTE]

坐等修复
2014-6-24 17:02
0
雪    币: 130
活跃值: (34)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
送我一枚ida pro 6.6, 还亲一枚吻哟
2014-6-27 17:23
0
雪    币: 42
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
期待有6.6学习。一直没找到。
2014-7-3 00:07
0
雪    币: 44
活跃值: (15)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
22
前来膜拜火翼
2014-7-16 21:22
0
雪    币: 30
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
。。。。。。。。软件不提供下载写这有啥用
2014-7-17 08:24
0
雪    币: 261
活跃值: (162)
能力值: ( LV13,RANK:320 )
在线值:
发帖
回帖
粉丝
24
能否共享?
2014-7-17 22:06
0
雪    币: 5855
活跃值: (438)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
25
感谢楼主教程,

找个程序测试了下,v0-v5全是Bad Type 。。
变量值都无法看,基本没什么用啊
2014-9-24 23:30
0
游客
登录 | 注册 方可回帖
返回
//