环境配置

  • ROOT真机或者带完整ROOT的模拟器
  • IDE,推荐使用Android Studio或者VS Code
  • JAVA环境(各种工具需要使用到)
  • ADB(建议加到PATH中)

常用工具介绍

  • Jadx

Jadx v1.1.0 界面介绍

功能比较简单,速度比较快,反编译和反混淆的结果比JEB容易看一点。

只支持smali,不支持JNI,也就是Native层的反编译。

  • JEB

    JEB 3.19.1 界面介绍

    JEB 3.19.1 脚本使用

    相比Jadx功能更多,支持反编译JNI。支持动态调试,支持脚本和插件。

  • IDA

    IDA 7.0 界面介绍

    跨平台的反编译工具,反编译JNI比较好用。支持动态调试,支持脚本和插件。

  • ADM (Android Device Monitor)

    ADM 界面介绍

    ADM是安卓SDK中附带的实用工具,路径为\android-sdk\tools\lib\monitor-x86_64\monitor.exe

动态调试方法

开启调试模式

使用ADM判断是否开启调试模式

i> 如果出现了debug标志代表该设备开启了调试模式,可以跳过本节

  • 确保设备已经刷入Magisk并激活

  • 安装Busybox for Android NDKMagiskHide Props Config模块,重启后生效。

    Magisk模块

  • 使用ADB Shell或者Termux等软件,运行命令:

    su
    props

    操作步骤

    依次选择Edit MagiskHide props -> ro.debuggable,然后输入y修改值,最后输入y,重启系统后生效。

  • 验证是否成功

    如果在ADM中可以看到debug标志说明修改成了。

使用ADB启动调试会话

  • 查看应用包名和启动入口

    查看应用包名

    查看应用启动Activity名

  • 构造ADB调试命令

    adb shell am start -D -n [包名]/[启动Activity名]

    例如上面的例子,构造以后是这样的:

    adb shell am start -D -n com.example.easyre/com.example.easyre.MainActivity
  • 等待附加调试器

    如果命令正确,将会弹出等待调试的提示:

    等待调试器的提示

    ADM的设备列表中也会在对应进程前面显示一个调试图标:

    ADM中显示调试图标

使用 JEB 进行附加调试

  • 确保已经使用'ADB'连接到了设备

  • 使用JEB打开APK,并在手机或者模拟器上运行对应应用。

  • JEB中启动附加调试

    JEB 附加调试

  • 下断点方法

    Java视图定位到代码以后,按TAB切换到Smali视图,使用调试器->打开或关闭断点添加或者移除断点。

使用 IDA 进行动态调试

  • 部署IDA调试工具

    默认路径在dbgsrv下,android_serverandroid_server64适用于ARM架构32位和64位应用,android_x86_serverandroid_x64_server适用于x86架构32位和64位应用,如果都不能正常工作,可以试试android_server_nonpie

    使用ADB传到安卓系统中adb push [本地文件路径] [远程文件路径],例如:

    adb push Desktop\IDA\dbgsrv\android_server /data/ida_server
    adb push Desktop\IDA\dbgsrv\android_server64 /data/ida_server64

    修改文件权限,可以使用adb shell或者Termux

    cd /data
    chmod 755 ida_server*

    启动调试工具

    ./android_server &

  • IDA中启动附加调试

    IDA 选择调试器

    IDA 选择附加进程

    IDA 附加调试界面

使用 Android Studio 进行动态调试

  • 使用Apktool生成逆向后的工程文件

    apktool d [APK路径]

    i> 如果Apktool反编译失败,可以试试Jadx

  • 在 Android Studio 中打开APK文件

  • 导入安卓工程

    导入安卓工程

  • 创建调试配置

    创建调试配置

  • Android Studio中启动调试会话

    Android Studio 启动调试会话

最后修改:2020 年 07 月 27 日 06 : 45 PM