首页
社区
课程
招聘
[推荐]gikdbg.art系列教程2.1-调试so动态库
2014-6-2 17:59 16114

[推荐]gikdbg.art系列教程2.1-调试so动态库

2014-6-2 17:59
16114
文字版,图文版就访问原始链接吧。

void usage(void) {

printf(“原创文章,欢迎转载和引用,不过请附上原始链接( http://gikir.com/blog/?p=115 )和本申明,否则嘛,哼哼…\n”);

}

本篇文章我们将介绍如何使用gikdbg.art调试so动态库, 此处我们以$(GIKDBG.ART)/artsample/apk/gikdebugee.apk为例进行Step by step的操作与解释以及一些注意事项的说明。

Step 0.前置说明

手机端:Android模拟器,Android 4.4.2 ART 运行时;(真机与DVM运行时是一样的)

PC端:ParallelDesktop虚拟机,Windows 8.0,gikdbg.art v1.0.build140601.3;

PS:非root环境的设备由于权限的原因会有很多问题,不推荐使用!

Step 1.连接设备

运行模拟器,打开gikdbg.art.exe,执行/ART Debug/Device菜单,我们就可以来到如下界面:

0-logindevice

如果模拟器已经运行了,但是设备列表中没有,则等待一段时间后执行右键的Refresh菜单。然后双击或者右键Login就可以登陆选中的设备了。

对于第一次Login该设备,会询问你是否上传依赖的文件到/data/local,这一步如果否定了的话将不能使用调试功能。上传文件这个步骤目前已知的问题是对于非root的设备,往往因为权限的原因上传不成功,一般情况下/data/local/tmp目录没有问题,但是有些设备又没有/data/local/tmp目录,因此我们只有设置/data/local为目标路径,这个问题目前还不知道好的解决办法。归纳一下就是:

非root的机器无法在其/data/local下创建我们依赖的文件夹以及上传文件,如果我们将其迁移至/data/local/tmp这个目录下,又有部分设备没有这个文件夹,就更没有办法上传了。

对于这类上传失败的同学,可以想办法手工将$(GIKDBG.ART)/adb/android/gdb传至/data/local/gikir_android-xxxx/gdb这个位置,其中xxxx是GUID。

如果还没有安装该apk文件的,则可以在ADB Shell中执行$install –r命令选择gikdebugee.apk进行安装.

Step 2.选择进程

登陆成功后执行,确保模拟器的gikdebugee.apk运行正常,然后执行/ART Debug/File/Attach就可以得到如下进程列表,选中我们的gikdebugee进程,双击或者执行Attach按钮:

1-attachprocess

之后我们就会看到如下加载输出:

2-attaching

等gdb加载完毕之后我们就可以进入熟悉的CPU主窗口了:

3-firststop

Step 3.选择模块

我们的目的是调试apk里面的so动态库,因此执行/ART Debug/View/Module切换到模块列表,选中我们要调试的模块,双击它:

4-modulelist

然后CPU窗口显示的代码就是该模块对应的代码了。

Step 4.击中断点
本例中找到要调试的函数getNativeString,我们可以用CTRL+F查找到它,找到之后F2下断点,F9运行它,然后在设备中操作按钮则该方法将被断点击中,F8运行3步,我们就得到如下视图了:

5-hitbkptstop

Done! 剩下的就与ollydbg调试x86一回事啦,伙计们,上吧!

剩下更多的细节,同学们可以前往 http://gikir.com/product.php 下载使用,自行摸索更多已经提供的功能。另外,在使用gikdbg.art的过程中有任何改进意见和Bug,欢迎反馈给我们以帮助我们将他开发得更加完善。

下一篇文章(gikdbg.art系列教程2.2调试控制台)我们将详细介绍如何使用gikdbg.art调试控制台程序,敬请关注 http://gikir.com/

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

收藏
点赞0
打赏
分享
最新回复 (8)
雪    币: 1947
活跃值: (1805)
能力值: (RANK:400 )
在线值:
发帖
回帖
粉丝
莫灰灰 9 2014-6-2 20:45
2
0
前几天试了下,前面步骤都OK,设置完断点,然后F9就挂了。(红米)
雪    币: 160
活跃值: (2308)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Yecate 2014-6-2 23:10
3
0
改天试试看
雪    币: 1662
活跃值: (3569)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
GeekNeo 2 2014-6-3 17:36
4
0
你这个App因为SIGILL闪退的问题以解决,更新到 gikdbg.art-v1.0.build140603.1 即可。
雪    币: 78
活跃值: (1523)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lookaside 2014-6-19 11:41
5
0
F9之后cpu指令窗口是空的,gdb命令窗口无法输入命令
雪    币: 1662
活跃值: (3569)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
GeekNeo 2 2014-6-23 15:47
6
0
今天更新到了v1.3,你下载试一试,看看还有没有这个问题。
雪    币: 16
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
轩轩hlq 2014-6-23 19:00
7
0
现在安卓加密也开始越来越厉害了
雪    币: 229
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
clane 2014-8-1 01:38
8
0
呃,试了下,为何双击so,cpu窗口无任何代码出现?
雪    币: 199
活跃值: (310)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
hewittlee 2 2015-4-24 17:19
9
0
手机端已经启动进程,附加进程没有看到进程,不知如何附加....
游客
登录 | 注册 方可回帖
返回