第六章 动态分析 Android 程序(四)(使用 JEB 动态调试 APK)

使用 JEB 动态调试 APK

  • 要求:2.2.3 或更高版本
  • 实例:GitHub

步骤

  • 启动要调试的目录,若要在 APK 启动前调试初始化部分的代码,就以调试模式启动它
  • 执行如下命令,以调试模式启动 MethodProfiling
    在这里插入图片描述
  • 启动 JEB,载入要分析的 APK,定位要设置断点的地方,按“Ctrl+B”设置断点
    在这里插入图片描述
  • 点击菜单项“调试器”(或“Debugger”)->“开始”(或“Start…”),打开调试对话框
    在这里插入图片描述
  • 在对话框中选中要调试的进程
    在这里插入图片描述
  • 若要中断所有线程,可勾选“暂停所有线程”(或“Suspend all threads”)
    在这里插入图片描述
  • 点击“附上”(或“Attach”),连接处于调试状态的 com.droider.methodprofiling 进程(JEB 会自动完成端口转发,不用 Device Monitor 实现端口转发;若已打开 Monitor,要关闭)。另外,如果开启了 AS 或其他监视器,也要关闭
    在这里插入图片描述
  • 注意:若设备或模拟器的版本低于 Android 5.1,会出现如下提示。现在更换更高版本的设备,重新开始上述步骤
    在这里插入图片描述
  • 连接后,左侧栏的“VM”选项会变绿,双击该选项,切换到“VM/线程”(或“VM/Threads”)标签页,可查看所有线程信息;切换到“VM/断点”(或“VM/Breakpoints”),可查看所有断点信息
    在这里插入图片描述
  • 点击菜单项“调试器”->“运行”(或“Run”),让程序运行。点击 MethodProfiling 实例的“MethodProfiling”按钮,程序会断在断点处。切换到“VM/局部变量”(或“VM/Locals”),可查看变量信息。点击“步入”与“步过”按钮,可单步与步过当前 Dalvik 指令
    在这里插入图片描述

总结

  • 显示效果比 JDB 智能很多
  • 调试功能仍不完善,对 MutliDex 的 APK 的调试力不从心