動態調試smali代碼
Android Killer對應用進行反編譯為smali代碼,看看Manifest文件中application標簽裏面是否有android:debuggable="true",沒有的話自己添加,在工程管理器中找到smali文件夾,右鍵打開路徑然後將smali文件夾復制出來並重命名為src
為Android Studio安裝smaliidea插件
啟動android device monitor,AS 3.0+已經不支持內部直接啟動ADM了,路徑切換至${PATH}\Sdk\tools然後執行monitor.bat即可
Android Killer打開調試的應用,記住包名與入口點,將應用安裝到設備
執行adb shell am start -D -n ${PackageName}/${EntryActivityName}開啟debug模式,此時設備將顯示等待調試
在ADM中打開devices界面,記下debug應用倒數第二列的值與最後一列的第二個值,然後關掉ADM(否則會占用8700端口,一般是8700)
進行端口轉發adb forward tcp:${Value2} jdwp:${Value1},其中${Value2}與${Value1}是上面記下來的那兩個值
AS裏File -> New -> Import Project -> 選中復制出的src的上級目錄 -> ok -> 全部next直至finish,項目結構改為Project,對src文件夾右鍵Make Directory As ->Source Root
配置遠程調試選項,Run -> Edit Configurations -> 添加一個Remote配置 -> 改名 -> 改端口為8700,然後OK
然後File -> Project Structure中選擇你的JDK,然後OK
再打開src中的smali文件,即可對其下斷點
接下來Run -> Debug ${Name}即可進行調試,這裏的名稱是上方調試選項的名稱,Watches窗口中可以查看寄存器什麽的值(需要自己添加),然後還可以執行中添加smali斷點
動態調試smali代碼