Android Studio 动调 APK

一、引言

在逆向过程中,发现一些实例对象和方法是动态代理创建并调用的,这就使得静态分析非常困难。而 Android Studio 却能够很好的处理这一问题。因此本文将讲述如何使用 Android Studio 动态调试 APK。

二、事前准备

2.1 使 APK 可调试

正常情况下 release 包是不允许调试的,所以必须先让 APK 可调试,一般有两种方法:

  • 反编译 APK,修改 AndroidManifest.xml 文件中的android:debuggable 为 true ,再重打包。
  • 测试机已 root。

2.2 插件安装

要想 Android Studio 能够调试 APK ,需安装如下两个插件:

  1. Smalidea

    插件地址:https://github.com/JesusFreke/smalidea

    下载下来后,在 setting->Plugins,选择 Install Plugin from Disk,找到下载下来的 Smalidea。

  2. Smali Support

    在 setting->Plugins 的 Marketplace 搜索 Smali Support 就可以直接安装。(我这里已经安装过)

三、导入APK

Android Studio 的菜单栏 File->Profile or Debug APK 或者起始页面打开 profile or Debug APK

如果没有找到,应该是 Android APK Support 这个插件没有启用,Settings中启用该插件即可。

选择目标APK后,等待反编译完成。

然后切换到 Project 视图

把反编译出来的smali文件夹改为源码文件目录,右键 smali文件夹 -> Make Directory as -> Sources Root

四、配置SDK

右键工程主目录,选择 Open Module Settings,设置 Project SDK 和测试手机的系统版本保持一致

五、创建调试器

打开 Edit Configurations

点击左上角加号 -> 选择Remote JVM Debug

配置信息可默认,但这里的 port 需要跟后续 adb 端口转发时的 port 保持一致。

六、建立端口映射

运行要调试的应用,获取它的进程pid

1
adb shell "ps | grep 目标包名"

进行adb 转发

1
adb forward tcp:5005 jdwp:pid

此处 tcp 端口与调试器中的 port 保持一致,jdwp 的 pid 为目标进程的 pid。

七、开始调试

下断点这事就不用多说了。

下完断点后,选择 Attach Debugger to Android Process

双击要调试的目标程序。

如果报错:Unsupported device. This device cannot be debugged using the native debugger

那么再刚才的 Attach Debugger to Android Process 出现的页面中,选择 Debug Type 为 Java only

最后成功开启调试,触发了所下的断点。


参考:

android studio动态调试apk最详细教程_apk调试-CSDN博客

Android Studio 动态调试apk - 知乎

AndroidStudio 无源码调试 release apk - DysaniazzZ


Android Studio 动调 APK
http://example.com/2024/12/07/Android安全/Android Studio动调APK/
作者
gla2xy
发布于
2024年12月7日
许可协议