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网站;

更多相关文章

  1. 使用Kotlin:让Android与JS交互的详解
  2. 在Android中用纯Java代码布局
  3. 【Android(安卓)开发】: Android(安卓)消息处理机制之三: Handle
  4. Android(安卓)上实现水波特效二--优化
  5. NDK与JNI的基础与基本配置和使用
  6. Android入门篇四:使用全局变量在Activity之间传递数据
  7. 在Ubuntu上为Android增加硬件抽象层(HAL)模块访问Linux内核驱动程
  8. 浅谈J2me游戏如何快速移植到Android
  9. Android(安卓)NDK开发(一)——ndk-build编译生成so库文件并使用

随机推荐

  1. Android游戏引擎《Rokon》:常见问题汇总(20
  2. 使用Repo在Windows平台下载Android(安卓)
  3. Android_之动画1
  4. android头像设置:从本地照片库或拍照获取
  5. android 数据存储 SharePreferences 简单
  6. Android之编译打包apk的技巧
  7. Android(安卓)Webkit中DocumentWriter模
  8. 由浅入深全面剖析ThreadLocal
  9. Android应用编程--基本概念
  10. Android蓝牙开发(三):操作步骤