smalidea动态调式Android smali代码

前文:

smalidea是IntelliJ IDEA / Android Studio的一个小插件.

不太适用于混淆严重或者加固的应用程序.

安装:

  1. 从Bitbucket(https://bitbucket.org/JesusFreke/smali/downloads/)下载页面下载最新的smalidea.zip文件;
  2. 在IDEA / AS中,设置 -> 插件,然后单击“从磁盘安装插件”按钮,选择下载的smalidea.zip文件;
  3. 单击“应用”并重新启动IDEA / AS。

调试应用程序:

注意:单步指令仅在IDEA 14.1及更高版本以及基于IDEA 14.1或更高版本的Android Studio中被支持。在早期版本中,尝试单步执行将转到下一个.line指令,而不是单步执行下一条指令。

1、使用baksmali将应用程序手动反汇编到新项目目录的“src”子目录中,例如 baksmali d myapp.apk -o ~/projects/myapp/src

2、在IDEA中,导入一个新项目,然后选择项目目录。例如~/projects/myapp

3、导入项目时,使用“从现有源创建项目”选项

4、创建项目后,右键单击src目录并选择“Mark Directory As-> Sources Root”

5、打开项目设置,然后选择/创建适当的JDK

6、在设备上安装/启动应用程序

7、运行ddms,然后选择应用程序的进程

8、在IDEA中,创建新的“远程”调试配置(运行 - >编辑配置),并将调试端口更改为8700

9、下断点,在需要调试的地方下断点即可

10、运行 - >调试

11、如果/当断点被击中时,应用程序应暂停,此时您可以单步执行,添加监视等。

再者:最近的Android Studio 3.2中执行以下操作:

  1. 使用baksmali将应用程序手动反汇编到新项目目录的“src”子目录中,例如 baksmali d myapp.apk -o ~/projects/myapp/src
  2. 在Android Studio中,关闭当前项目并选择“打开现有的Android Studio项目”。
  3. 创建项目后,右键单击src目录并选择“Mark Directory As-> Sources Root”
  4. 确保您的应用具有android:debuggable="true"Android Manifest。打开“USB调试”并使用“选择调试应用”在Android设备的“开发人员选项”中选择
  5. 使用启动应用程序并将JDWP服务转发到localhost adb forward tcp:8700 jdwp:$(timeout 0.5 adb jdwp | tail -n 1)(替代ddms)
  6. 在Android Studio中,创建一个新的“远程”调试配置(运行 - >编辑配置),并将调试端口更改为8700
  7. 在Android Studio中,选择“运行” - >“调试”

如果/当断点被击中时,应用程序应暂停,此时您可以单步执行,添加监视等。