android 调试利器之IDA
16lz
2022-05-07
android 调试利器之IDA (xingchongatgmaildotcom)
工欲善其事,必先利其器 IDA 是公认的反汇编最给力的工具。google IDA 或者IDApro 就能找到IDA的主页; IDA价格是很贵的,最便宜的license也要超过500美元,不过他提供Demo版本,虽然功能有限制,但基本功能都在,而且可以无限期使用;
IDA不但支持x86,也支持arm平台;笔者在调试android/ARM上面的程序,试用了了IDA,用得很爽,可以说相比之下objdump简直弱爆了。 对此,下面举两个例子:
1. 清晰的显示所调用的库函数名字,以及各个参数; 上图为IDA反汇编结果,显示了调用libc函数kill, 其中R0/R4存放着pid(第一个参数), R3放着sig 是signal number = 0x17(第二个参数)。 一目了然; 下图为objdump反汇编结果,一比就只高下;
2. 不同代码块中,对同一块内存的访问用同一个符号表示
上图为IDA反汇编结果,显示两段代码访问同一个变量,黄色高亮部分就是IDA给变量起的名字。 再看下图objdump反汇编,同样的两段代码,你能看出他们是在访问同一个内存变量吗? 对于没有高级语言源代码的调式工作,找出哪些代码访问某一块内存有时候是至关重要的。面对objdump,只能无奈了;
笔者作为经常调试程序的码农,而且是看不到源代码的码农,IDA的帮助真的很大,不仅仅加快了进度,有时候还变不能为能;
IDA还有反编译的功能,直接反编译成高级语言C代码,可惜这个功能不在Demo版之内,而且需要额外的license费用,笔者负担不起;有兴趣的可以参看IDA网站;
工欲善其事,必先利其器 IDA 是公认的反汇编最给力的工具。google IDA 或者IDApro 就能找到IDA的主页; IDA价格是很贵的,最便宜的license也要超过500美元,不过他提供Demo版本,虽然功能有限制,但基本功能都在,而且可以无限期使用;
IDA不但支持x86,也支持arm平台;笔者在调试android/ARM上面的程序,试用了了IDA,用得很爽,可以说相比之下objdump简直弱爆了。 对此,下面举两个例子:
1. 清晰的显示所调用的库函数名字,以及各个参数; 上图为IDA反汇编结果,显示了调用libc函数kill, 其中R0/R4存放着pid(第一个参数), R3放着sig 是signal number = 0x17(第二个参数)。 一目了然; 下图为objdump反汇编结果,一比就只高下;
2. 不同代码块中,对同一块内存的访问用同一个符号表示
上图为IDA反汇编结果,显示两段代码访问同一个变量,黄色高亮部分就是IDA给变量起的名字。 再看下图objdump反汇编,同样的两段代码,你能看出他们是在访问同一个内存变量吗? 对于没有高级语言源代码的调式工作,找出哪些代码访问某一块内存有时候是至关重要的。面对objdump,只能无奈了;
笔者作为经常调试程序的码农,而且是看不到源代码的码农,IDA的帮助真的很大,不仅仅加快了进度,有时候还变不能为能;
IDA还有反编译的功能,直接反编译成高级语言C代码,可惜这个功能不在Demo版之内,而且需要额外的license费用,笔者负担不起;有兴趣的可以参看IDA网站;
更多相关文章
- 使用Kotlin:让Android与JS交互的详解
- 在Android中用纯Java代码布局
- 【Android(安卓)开发】: Android(安卓)消息处理机制之三: Handle
- Android(安卓)上实现水波特效二--优化
- NDK与JNI的基础与基本配置和使用
- Android入门篇四:使用全局变量在Activity之间传递数据
- 在Ubuntu上为Android增加硬件抽象层(HAL)模块访问Linux内核驱动程
- 浅谈J2me游戏如何快速移植到Android
- Android(安卓)NDK开发(一)——ndk-build编译生成so库文件并使用