资料

用AndroidStudio动态调试smali

教程笔记

调试步骤

源程序修改是一种比较旧的调试方法,使用apktool的-d选项
① java -jar apktool.jar -d 目标.apk -o 结果存放目录
② 修改Android.manifest文件,在application节点中添加android:debuggable=“true”
③ 在入口点的类的onCreate方法中添加

invoke-static{}, Landroid/os/Debug;->waitForDebugger()V

④ 反编译修改过的apk文件

java -jar apktool.jar b -d 代码目录 -o 目标apk名字

⑤ 手动对apk文件进行签名

java -jar signapk.jar testkey.x509.pem testkey.pk8 未签名APK名称 签名APK名称

导入apk代码

① idea/AndroidStudio File ->open,选择编译后的文件目录,导入代码
在相应的位置下好断点.
② 设置远程调试选项
Run->Debug Configurations -> Remote Java Application, Host填写为localhost, 端口为Debug
开放的端口8700

打开目标apk文件

① 打开apk文件,直到看到wait for debugger的提示
② 打开monitor,选中需要调试的程序,开启8700端口
Debug!!!

实战

1. 使用apktool先进行反编译

使用apktool来debug调试反编译后的smali工程_jar

2. Android Studio 安装ideasmali插件

安装此插件才能进行调试
下载地址: https://bitbucket.org/JesusFreke/smalidea/downloads/

使用apktool来debug调试反编译后的smali工程_android_02


使用apktool来debug调试反编译后的smali工程_Android_03


使用apktool来debug调试反编译后的smali工程_jar_04

3 使用Android Studio打开app-debug文件夹(工程)

使用apktool来debug调试反编译后的smali工程_jar_05

4 添加waitforDebug函数及断点

使用apktool来debug调试反编译后的smali工程_jar_06

5 修改AndroidManifest清单文件

使用apktool来debug调试反编译后的smali工程_Android_07

debug程序

使用apktool来debug调试反编译后的smali工程_android studio_08

使用apktool来debug调试反编译后的smali工程_java_09