安卓逆向學習——動態調試

安裝好AndroidStudio後設置JDK和SDK路徑
在這裏插入圖片描述
在這裏插入圖片描述
安裝Smali插件
在這裏插入圖片描述
在這裏插入圖片描述
選擇你的Smalidea插件的位置
在這裏插入圖片描述
添加插件
在這裏插入圖片描述
接下來把要安裝的apk安裝到模擬器上運行該進程
在這裏插入圖片描述
打開AS,選擇打開項目,直接導入AK反編譯的apk文件路徑即可。
在這裏插入圖片描述
複製上面的文件路徑
在這裏插入圖片描述
打開AS導入對應路徑項目
在這裏插入圖片描述
導入成功後選擇Project
在這裏插入圖片描述
在這裏插入圖片描述
連接模擬器Shell查看進程
在這裏插入圖片描述
找到我們打開進程的PID
在這裏插入圖片描述
轉發調試端口到8700
在這裏插入圖片描述
開始配置AS的調試設置
在這裏插入圖片描述
添加調試策略
在這裏插入圖片描述
在這裏插入圖片描述
選擇字符串搜索,找到要下斷點的Smali代碼位置,我們這裏以字符串定位
在這裏插入圖片描述
我們搜索onKey()函數,並在其中執行的位置下斷點。
在這裏插入圖片描述
點擊Debug按鈕
在這裏插入圖片描述
在這裏插入圖片描述
開始測試調試,隨意輸入一些內容按回車,發現多出以下信息
在這裏插入圖片描述
在這裏插入圖片描述
右側是自定義查看窗口,可以隨意查看想要看的變量
在這裏插入圖片描述
在這裏插入圖片描述
F8鍵是單步步過,也可以按下面的按鈕實現
在這裏插入圖片描述
F7單步步入
在這裏插入圖片描述
在這裏插入圖片描述
這種動態調試雖然沒有jeb提示那麼清晰,但是卻更加穩定,可以修改this指針的值,除了this指針的值其他寄存器是不能修改的。
第二種調試方法
可以不用輸入轉發端口指令,只需要打開ddms,點擊想要調試的進程
在這裏插入圖片描述
然後直接點擊Debug按鈕即可調試
在這裏插入圖片描述
如果出現以下錯誤提示是代表調試端口被佔用了,需要重啓一下連接服務
在這裏插入圖片描述
重啓服務
在這裏插入圖片描述
重新選擇要調試程序,發現有調試圖標
在這裏插入圖片描述
再次點擊調試,又一次進入調試狀態
在這裏插入圖片描述
指定調試開始的入口點
有的時候我們不希望以附加方式進行調試,而是在程序啓動前就設置好調試斷點。就像OD自動停在OEP一樣,再執行下就直接斷在我們設置的斷點上。我們首先需要先進入shell輸入以下指令,用調試模式啓動某一進程

am start -D -n 包名/入口活動名    //包名和入口活動名可以用AndroidKiller獲取

在這裏插入圖片描述
在這裏插入圖片描述
打開jeb隨意選取一個要調試的內容
在這裏插入圖片描述
設置好斷點
在這裏插入圖片描述
點擊調試按鈕找到指定的進程就可以動態調試了,但是jeb很不穩定,我更願意使用AS的調試方式。
AS的調試方式
上面的命令行設置相同,只需要設置響應的斷點
在這裏插入圖片描述
打開ddms,發現紅色調試圖標,代表當前進程在等待我們的對其進行掛接
在這裏插入圖片描述
然後直接點擊Debug就可以掛接到調試進程了
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章