博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Gdb+gdbserver无源码调试Android 动态链接库的技巧
阅读量:6572 次
发布时间:2019-06-24

本文共 643 字,大约阅读时间需要 2 分钟。

作者:薛定諤耗子

有图片版本请下载我的资源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函数名设置断点以外,还可以使用地址设置断点,地址设置断点的方法就是在地址前加“*”号。当函数调入系统库很深的时候,我们就可以使用地址的方法让系统运行到我们制定的地方。

 

 

转载地址:http://rhojo.baihongyu.com/

你可能感兴趣的文章
Spark入门实战系列--3.Spark编程模型(上)--编程模型及SparkShell实战
查看>>
和“黑凤梨”一样搞笑的谐音词
查看>>
EM算法(Expectation Maximization Algorithm)
查看>>
C# 操作iis6、iis7 301
查看>>
从零开始学 iOS 开发的15条建议
查看>>
SQL Server 合并复制遇到identity range check报错的解决
查看>>
深入理解C# 静态类与非静态类、静态成员的区别
查看>>
精灵菜单
查看>>
【Leetcode】Path Sum II
查看>>
设计模式 总揽 通过这篇随笔可以访问所需要了解的设计模式
查看>>
Photoshop和WPF双剑配合,打造炫酷个性的进度条控件
查看>>
2014最不受欢迎10编程语言种
查看>>
LVM逻辑卷管理@设备、格式、摩、引导自己主动安装一个完整的章节
查看>>
iOS 开发笔记-加载/初始化
查看>>
(转)SqlServer基础之(触发器)(清晰易懂)
查看>>
lintcode :Count and Say 报数
查看>>
浅谈矩阵分解在推荐系统中的应用
查看>>
视频编解码器,bbv 缓冲区溢出和下溢
查看>>
一些小知识
查看>>
android 71 ArrayAdapter和SimpleAdapter
查看>>