前言
之前對於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是我們之前配置好的調試選項。
運行起來之後就可以單步執行,查看寄存器的值,慢慢調試了。