前言
之前对于app反编译的smali汇编语言都是静态分析为主,加上一点ida6.6的动态调试,但是ida的调试smali真的像鸡肋一样,各种不爽,遇到混淆过的java代码就欲哭无泪了。后来知道IDEA用一款插件也可以实现smali的动态调试,但是只有14.1之后的版本才支持。熟悉Android开发的人还是比较喜欢用Android Studio,就想着用Android Studio来代替idea来达到动态调试的目的。
工具
- Android Studio
- apktool,尽量使用最新版的。
- ideasmali插件,可以在Android Studio插件库中找到
具体步骤
Step1:安装ideasmali插
安装ideasmali插件,File->Settings->Plugins,安装之前下载的ideasmali插件。
Step2:反编译apk
Step3:以调试状态启动app,并转发8700端口
以调试状态启动app,并转发8700端口 [app_pid]。记住这时候需要将DDMS关掉,不然会出现错误
Step4:导入smali文件到Android Studio
使用AS导入之前反编译的目录,这里选择debugsmali文件夹就可以了。
然后选择Create project from existing sources,之后一直选择next。
Step5:Android Studio项目配置
对之前反编译的debugsmali/src文件夹右键-->Make Directory As --->Source Root
配置远程调试的选项,选择Run-->Edit Configurations:
增加一个Remote调试的调试选项,端口选择:8700
之后选择File-->Project Structure 配置JDK
Step6:启动调试
下好断点之后Run-->Debug'smali',这里的smali是我们之前配置好的调试选项。
运行起来之后就可以单步执行,查看寄存器的值,慢慢调试了。