Android studio动态调试smali

时间:2021-02-15 18:19:17
前面介绍了使用IDA动态调试smali,这种方法设置简单,不用重打包,用起来方便,但是如果变量类型设置错误则会马上退出调试,这是让人不爽的地方,而使用Android studio则不会。
 
0x01    工具
①Android Studio最新版。
②apktool尽量使用最新版的。
③ideasmali插件。下载地址https://github.com/JesusFreke/smali/wiki/smalidea

0x02     具体步骤
安装ideasmali插件,选择File->Settings->Plugins,安装之前下载的ideasmali插件。

Android studio动态调试smali
Android studio动态调试smali
以调试状态启动app
Android studio动态调试smali
Android studio动态调试smali
通过ddms查看端口:
Android studio动态调试smali
Android studio动态调试smali
如果不用 ddms 可以通过adb shell执行 ps | grep kugou命令查看转发端口:
Android studio动态调试smali
Android studio动态调试smali
然后进行端口转发:
adb forward tcp:8700 jdwp:24551

记住这时候需要将DDMS关掉,不然会出现错误

Android studio动态调试smali
Android studio动态调试smali
创建DebugSmali/src目录,使用apktool或者baksmali反编译要调试的apk到DebugSmali/src目录,使用Android Studio导入该目录,如图所示:
Android studio动态调试smali
Android studio动态调试smali
然后选择Create project from existing sources,之后一直选择next。
Android studio动态调试smali
Android studio动态调试smali           
成功导入工程后右键点击 src 目录,设定Mark Directory As->Sources Root
Android studio动态调试smali
Android studio动态调试smali
配置远程调试的选项,选择Run-->Edit Configurations:
Android studio动态调试smali Android studio动态调试smali
增加一个Remote调试的调试选项,端口选择:8700
Android studio动态调试smali    Android studio动态调试smali
设置端口号
Android studio动态调试smali   Android studio动态调试smali
之后选择File-->Project Structure 配置JDK
Android studio动态调试smali
Android studio动态调试smali           
Android studio动态调试smali
Android studio动态调试smali        
下好断点之后Run->Debug,  
Android studio动态调试smali
Android studio动态调试smali             
稍等几秒,断点触发后就可以单步调试  
Android studio动态调试smali
Android studio动态调试smali