#准备工具#
注:以下AS=Android Studio ##Smalidea+Android Studio调试smali代码## github地址
下载地址 (下载最新版baksmali, smali, smalidea) 安装
打开Android Studio:Tools>Android>SDK Manager>Plugins>Install plugin from disk...>——选择下载好的smalidea-0.03.zip
#将反编译得到的Smali代码导入到Android Studio并配置调试端口#
##用ApkTool或baksmali得到smali代码##
java -jar baksmali-2.2b4.jar help
java -jar baksmali-2.2b4.jar disassemble myapp.apk -o ./projects/myapp/src
或
apktool d <file.apk> 反编译到当前文件夹
apktool d <file.apk> -o <dir> 反编译到指定文件夹
apktool d –f <file.apk> <dir> 强制覆盖已存在文件
用文本编辑工具打开AndroidManifest.xml,在application节点中设置属性android:debuggable="true"
添加调试等待
invoke-static {}, Landroid/os/Debug;->waitForDebugger()V //可以添加到应用启动的onCreate方法中
打包文件
apktool b -d <dir> -o <file.apk>
使用keytool和jarsinger给apk重新签名
keytool -genkey -v -keystore my-keystore.keystore -alias name_alias -keyalg RSA -validity 10000
(validity为有效期,单位是天)
jarsigner -verbose -keystore <path of my-keystore.keystore> <path of apk> alias_name
zipalign -f -v 4 <your.apk > <your_aligned.apk>
参考
【Android安全】使用jarsigner命令对apk进行重签名
使用keytool和jarsigner为jar签名
##将反编译得到的Smali代码导入Android Studio## 打开AS>import project>选择Smali文件夹> 一路下一步即可
右键project>Mark Directory As..>Sources Root
File>Project Structure..>选择对应的SDK
依次选择Run>Edit Configurations...>+>Remote>输入调试进程的名字(可选),填写一个未被占用端口(8700)>ok
链接手机,打开USB调试
adb install <file.apk>
Tools>Android>Android Device Monitor(可以通过一个完整的Gradle项目打开)
选择Devices>Thread>选中8700端口应用
返回AS,设置好断点,点击debug按钮,开始调试