Gdb+gdbserver无源码调试Android 动态链接库的技巧

作者:薛定諤耗子

有图片版本请下载我的资源doc文档

 

1,按照前一篇文章《薛定諤耗子:使用hello-gl2建立ndk-gdb环境》,我们可以顺利进入无源码调试环境,进入之后,我们就要进行实际的调试了。就像我们工作,顺利通过面,而且入职了,下面我们就应该研究如何工作了。

 


2 ,首先对于无源码,我们第一个想到的就是如何看汇编代码了,就像 dos 时代的 debug 一样。怎么看呢?

其实很简单,只需要打开一个一个开关就可以了。

(gdb) set disassemble-next on

打开这个开关之后,如果我们执行si指令之后,就会像当年dos程序一样的显示出汇编代码了。

 

除了si显示下一条指令的汇编代码,我们还可以显式的去显示我们想知道的汇编代码

3,除了查看汇编代码以外,我们还想看看寄存器的值,如何查看?使用info register指令

 

4,使用反汇编,我们可以看出代码执行到什么位置,但是这种局部的代码,实在不好分析,所以,我们需要动态调试和静态分析结合起来使用,静态工具最好使用IDA Pro,这是一个非常优秀的工作,逆向工程里的瑞士军刀。

 

使用IDA Pro,不但,只需把鼠标放到跳转的函数上面,就可以

 

另外IDA Pro选择图形方式看代码,你还可以清楚看出代码的逻辑结构

 

 

 

5,除了使用export函数名设置断点以外,还可以使用地址设置断点,地址设置断点的方法就是在地址前加“*”号。当函数调入系统库很深的时候,我们就可以使用地址的方法让系统运行到我们制定的地方。

 


 

posted @ 2013-06-13 21:04  爱生活,爱编程  阅读(1608)  评论(0编辑  收藏  举报