Android逆向-动态调试环境搭建记录

常见Android调试方法简介:

1.IDEA/Android Studio + SmaliIdea插件

可调试smali文件,但无法跟入so
本文不涉及该种方法(因为JEB完全可以替代)

2.JEB直接调试

可调试Smali和so,无缝衔接但是收费
(简单来讲就是你买不起,但是嘛。。你懂的)

3.IDA pro附加调试

主要用来调试so,还有一手F5插件看源码

实际使用如下

JEB直接调试步骤
  1. JEB打开目标apk
  2. adb检查是否连接到目标机器



    如果出现了offline字样或者检测不到设备的话请依次检查以下内容:

  1. 手机/虚拟机是否打开了USB调试
  2. 确保系统中仅有一个adb可执行文件
  3. 执行adb kill-server,然后adb start-server
  1. 确保android:debuggable="true"
  2. 安装目标apk到机器,然后启动它


注意这里启动不一定需要以调试模式启动,直接打开也可以

  1. 点击工具栏debug按钮进行附加



    Android逆向-动态调试环境搭建记录_第1张图片

    如果已经打开对应app的话,下面process会自动显示对应进程,这里直接回车附加到对应进程即可

  2. 这个时候Toolbar上原来灰色的调试按钮会变为可用



    对应意义就不赘述了。。就单独提一点,JEB的断点比较蛋疼,需要用“执行到光标”来达到下断点的目的


IDA调试步骤

做过IDA动态调试linux的同学对这个应该就比较轻车熟路了

注意以下步骤首先需要root权限

  1. 首先把IDA的dbgsrv文件夹下的android_server用adb给push到手机中,一般是/data/local/tmp中
  2. 然后进入adb shell,以su权限启动android_server(第一次需要chmod)
  3. 使用adb forward tcp:23946 tcp:23946进行端口转发
  4. 使用调试模式启动app,adb shell am start -D -n 包名/类名
  5. IDA attach进程,开始愉快的调试

注意事项:

  1. IDA是可以选择暂停的时机的


    Android逆向-动态调试环境搭建记录_第2张图片
  2. 针对反调试需要在so加载时暂停的情况
    你需要使用jdb辅助,具体步骤如下:

adb forward tcp:8700 jdwp:进程号
jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=8700

你可能感兴趣的:(Android逆向-动态调试环境搭建记录)