AndroidStudio动态调试smali(实测可用)

0x01 工具
①Android Studio最新版。
②apktool尽量使用最新版的。
③ideasmali插件。下载地址https://github.com/JesusFreke/smali/wiki/smalidea

0x02 具体步骤
安装ideasmali插件,选择File->Settings->Plugins,安装之前下载的ideasmali插件。
AndroidStudio动态调试smali(实测可用)
AndroidStudio动态调试smali(实测可用)

安装的是压缩包;
注意:模拟器无需在 AndroidManifest.xml中添加android:debuggable=“true”,只需用adb命令启动调试就行了见下文
导入反编译后的smali文件:
AndroidStudio动态调试smali(实测可用)
AndroidStudio动态调试smali(实测可用)
可以导入整个工程文件,也可以仅导入smali文件夹;
Android studio设置远程调试选项
AndroidStudio动态调试smali(实测可用)
AndroidStudio动态调试smali(实测可用)

8700被占用,更改端口;
AndroidStudio动态调试smali(实测可用)

Android studio Jdk设置
AndroidStudio动态调试smali(实测可用)
AndroidStudio动态调试smali(实测可用)

将class.dex用apk助手反编译的smali文件目录作为资源目录
AndroidStudio动态调试smali(实测可用)
AndroidStudio动态调试smali(实测可用)

用AndroidKiller查看要调试的app的包名与入口activity的名字
AndroidStudio动态调试smali(实测可用)

adb命令启动调试
首先运行模拟器,模拟器内启动调试程序
然后cmd窗口依次输入下面的命令
adb devices#查看模拟器
adb -s emulator-5554(模拟器名) shell#打开模拟器的shell
am start -D -n (包名/入口名) 开启调试
AndroidStudio动态调试smali(实测可用)
shell 模式下输入 linux命令 ps 查看模拟器内运行的程序找到我们要调试的程序的pid,这里是3010
AndroidStudio动态调试smali(实测可用)
附加进程退出shell 模式,cmd模式下输入命令 adb forward tcp:8700 jdwp:3010
AndroidStudio动态调试smali(实测可用)
开始调试
AndroidStudio动态调试smali(实测可用)

断点生效后如下图:之前的命令如下:
AndroidStudio动态调试smali(实测可用)
AndroidStudio动态调试smali(实测可用)
AndroidStudio动态调试smali(实测可用)
AndroidStudio动态调试smali(实测可用)