Android smali動態(tài)調(diào)試

調(diào)試步驟

反編譯apk

  1. 使用apktool工具反編譯apk
java -jar apktool.jar d -fo out/
  1. 在AndroidManifest.xml里面的Application標簽添加以下內(nèi)容打開調(diào)試開關
<application  android:debuggable="true" ....
  1. 除此之外,還要在啟動的Activity的onCreate方法添加等待調(diào)試語句,防止apk已啟動就代碼執(zhí)行了,具體看一下:
invoke-static {}, Landroid/os/Debug;->waitForDebugger()V

和包,將上一個步驟產(chǎn)生的文件合成apk

  1. 和包
java -jar apktool.jar b out/
  1. 簽名并安裝到手機上,如果此時啟動應用,apk可能處于白屏無影響狀態(tài),這就是等待你調(diào)試啟動

Android studio開始調(diào)試

  1. 將第一個步驟反編譯產(chǎn)生的smali文件導入到studio工程中,一直選默認即可
1.png
  1. 使用adb 命令或者手動啟動應用,adb命令如下:
adb shell am start -D -n com.jack.qrcode/.ui.MainActivity

1.png

-D:開啟debug模式
-n打開以包名/Activity名方式啟動
相關命令詳解可點擊

  1. 查看手機端的應用進程并進行端口映射
adb shell ps | grep "qrcode"
adb forward tcp:8901 jdwp:16886
1.png

插入知識點:adb調(diào)試橋,adb調(diào)試橋是Android官方定制的一款Android強大的調(diào)試工具,通過adb工具我們可以向設備發(fā)送調(diào)試指令,獲取設備的運行狀態(tài),操作控制設備;adb調(diào)試橋分為三個部分:服務器(PC端,代碼在Android sdk里面)、客戶端(PC端,我們通常發(fā)送一個指令,如adb shell install xx.apk就是客戶端的操作)和后臺程序(設備端,接收執(zhí)行反饋狀態(tài));服務端端用于連接客戶端和后臺程序,知道數(shù)據(jù)發(fā)送接收工作,Android studio等開發(fā)工具的調(diào)試工具部分就是利用adb功能編寫,上面的端口映射也就是講PC端口8091的數(shù)據(jù)都轉(zhuǎn)發(fā)到設備端16886的進程中去;具體工作流程可點擊這里

  1. 配置Android studio的debug參數(shù)
1.png
  1. 設置斷點后開始調(diào)試即可,下圖是到斷點處的調(diào)試信息
1.png
  1. 后面就可以點IDE上的調(diào)試按鈕開始調(diào)試了,祝你成功
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容