1. 程式人生 > >動態調試smali代碼

動態調試smali代碼

bat 轉發 應用 monit 包名 port 入口 director monitor

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代碼