android 调试凶器之IDA

android 调试利器之IDA
android 调试利器之IDA  (xingchongatgmaildotcom)

工欲善其事,必先利其器
IDA 是公认的反汇编最给力的工具。google IDA 或者IDApro 就能找到IDA的主页;
IDA价格是很贵的,最便宜的license也要超过500美元,不过他提供Demo版本,虽然功能有限制,但基本功能都在,而且可以无限期使用;

IDA不但支持x86,也支持arm平台;笔者在调试android/ARM上面的程序,试用了了IDA,用得很爽,可以说相比之下objdump简直弱爆了。
对此,下面举两个例子:

1. 清晰的显示所调用的库函数名字,以及各个参数;
android 调试凶器之IDA
上图为IDA反汇编结果,显示了调用libc函数kill, 其中R0/R4存放着pid(第一个参数), R3放着sig 是signal number = 0x17(第二个参数)。 一目了然;
下图为objdump反汇编结果,一比就只高下;
android 调试凶器之IDA

2. 不同代码块中,对同一块内存的访问用同一个符号表示
android 调试凶器之IDA
上图为IDA反汇编结果,显示两段代码访问同一个变量,黄色高亮部分就是IDA给变量起的名字。
再看下图objdump反汇编,同样的两段代码,你能看出他们是在访问同一个内存变量吗?
对于没有高级语言源代码的调式工作,找出哪些代码访问某一块内存有时候是至关重要的。面对objdump,只能无奈了;
android 调试凶器之IDA

笔者作为经常调试程序的码农,而且是看不到源代码的码农,IDA的帮助真的很大,不仅仅加快了进度,有时候还变不能为能;

IDA还有反编译的功能,直接反编译成高级语言C代码,可惜这个功能不在Demo版之内,而且需要额外的license费用,笔者负担不起;有兴趣的可以参看IDA网站;