安卓逆向笔记(6)——动态调试


未完,编辑ing…

工具

  1. DDMS
    位于安卓sdk的安装目录下,具体目录:…(你自己安装sdk的路径)\android-sdk\tools\monitor.bat ,这个bat就是DDMS,在eclipse和Android Studio界面打开的动态调试器都是这个东西。可以直接双击这个bat运行。
  2. AndBug
    调试Android程序
  3. IDA Pro
    调试Android原生程序
  4. gdb
    调试Android原生程序

动态调试原理

Android程序的调试分为Android SDK开发的Java程序调试Android NDK开发的原生程序调试
Java程序调试
利用Dalvik虚拟机提供的调试特性来进行调试。

原生程序调试
使用传统的Linux程序调试方法,如GNU调试服务器来连接进行调试。
原生程序又分为动态链接库普通可执行程序两种。

在真机中调试

在真机中进行调试,需要先检查真机的ro.debuggable属性值是否为1,如果为1,则真机中所有app都可调试。如果为0,则只有app的AndroidMainfest.xml文件中,标签中加入了android:debuggable="true"属性,才能进行调试。
在cmd中输入命令:

adb shell getprop ro.debuggable

获取ro.debuggable的值。一般真机出厂的时候,该值都会被设置为0。

在模拟器中调试

在模拟器中,系统的ro.debuggable属性默认为1,因此模拟器中的所有进程都可以随意调试。

寻找关键代码

代码注入法

字符串搜索,分析可疑代码位置,注入smali代码,打log或者toast消息,修改完成后重打包,再次操作app,分析日志或者看toast,在完成目标操作后是否有日志或者toast以确定是否找到了正确的代码位置

栈跟踪法

  1. ddms method profiling打印函数调用栈
  2. frida hook 打印函数调用栈
  3. 葫芦娃的Zentrace

猜你喜欢

转载自blog.csdn.net/yhsnihao/article/details/89434431
今日推荐