Android Studio 3.6 调试 smali

        以前在Android Studio中调试 smali 还是非常麻烦的时候,配置不好就是

Error running Smali: Unable to open debugger port (localhost:8700): java.io.IOException "handshake failed - connection prematurally closed

       目前最新版的 Android Studio 利用附加功能调试 smali 非常方便 ,操作步骤如下:

 

文中会用到工具及下载地址:

        ①、apktool.jar(目前最新版 v2.4.1),用于反编译smali,

下载地址:    https://ibotpeaches.github.io/Apktool/ 

        ②、Android Studio (目前最新版本 3.6)用于Android开发调试IDE,

下载地址: https://developer.android.google.cn/studio/

        ③、smalidea-0.05.zip (目前最新版 0.05),AS 插件,用来给smali下断点,单步调试,

下载地址      https://bitbucket.org/JesusFreke/smali/downloads/

 

1.  先配置好Android Studio开发环境,这步就略去

2. Android Studio中安装 smalidea 插件,先从官网下载 smalidea zip包,然后在 Android 中依次选择:

    File   -->  Setting   将会弹出设置对话框

Android Studio 3.6 调试 smali_第1张图片

然后在设置对话框依次选择:  Plugins   -->  <设置图标>  --> Install Plugin from Disk...

Android Studio 3.6 调试 smali_第2张图片

在弹出选择对话框中,找到下载好的 smalidea 压缩包,选择ok即可

Android Studio 3.6 调试 smali_第3张图片

至此,插件安装就完成了,关闭 Android Studio

3. 用 apktool 反编译 apk 

    使用命令 : java.exe -jar  apktool.jar d -f    -o

    也可以直接使用 ApkTool 集成环境(如果反编译失败可以替换其中的 apktool.jar 至最新版):

Android Studio 3.6 调试 smali_第4张图片

在 反编译出来的 AndroidManifest.xml 的 application 节点添加 android:debuggable="true"

然后在 主 Activity 中加入  invoke-static {},Landroid/os/Debug;->waitForDebugger()V

Android Studio 3.6 调试 smali_第5张图片

重建且签名 apk 

Android Studio 3.6 调试 smali_第6张图片

安装 重建后的 apk 到手机 

(这步如果重新打包失败,可以安装原始包,把手机 root 配置/default.prop 的 ro.debuggable=1 开启全局调试。

然后用命令启动 Activiry : adb shell am start -D -n package属性的值/android:name属性的值  )

 

4. 将 反编译工程导入到 Android Studio 

Android Studio 3.6 调试 smali_第7张图片

默认选择 Create project from existing sources ,一路 next ,最后点击 Finish 即可

用 Project 视图,在项目目录右键  --> Mark Directory as ... --> Sources root

Android Studio 3.6 调试 smali_第8张图片

5. 展开 smali 目录选择刚才添加 waitForDebugger 代码的 smali 文件下一行下断点

Android Studio 3.6 调试 smali_第9张图片

6. 运行手机上安装的apk(apk会假死停在 waitForDebugger 代码处,等待调试器)。

 

7.在Android Studio选择附加

Android Studio 3.6 调试 smali_第10张图片

此时,已经 Attach 到进程中,可以快乐的调试了

Android Studio 3.6 调试 smali_第11张图片

 

 

你可能感兴趣的:(Android Studio 3.6 调试 smali)