首發(fā):Android Studio動態(tài)調試Smail
0x00 前言
DDCTF安卓題調試
上一次是靜態(tài)修改,后來我在想能不能動態(tài)調試得到Flag,于是就有了這篇文章。
0x01 準備工作
下載、安裝android studio
非常神奇,可以不翻(河蟹)墻下載,看來G(河蟹)F(河蟹)W對程序員還是很友善的。
android studio集成了所需要的東西,以前eclipse需要另外裝各種東西方便很多。





下載、安裝模擬器
推薦使用這款模擬器
https://www.yeshen.com/
模擬器安裝就不贅述了。
改之理
很多apk解包使用apktools.jar會出現各種問題,直接用ide會方便很多。
0x02 實戰(zhàn)操作
解包與導入工程到Android Studio
首先使用apk改之理解包,直接用改之理打開apk包即可,改之理目錄下就會有解包后的文件。

work目錄下是解包后的文件

打開Android Studio選Import project

選擇剛才的解包目錄

直接next到底


導入后會有一段時間的加載文件。

安裝smalidea
File--->Settings--->Install plugin from disk

下載smalidea-0.05.zip(這一步只需要做一次)
https://bitbucket.org/JesusFreke/smali/downloads/
選擇剛下載的smalidea-0.05.zip

導入需要重啟一下。

尋找命令行啟動參數
改之理解包目錄下打開AndroidManifest.xml,記錄activity層的android:name值。

adb shell啟動apk
運行模擬器,在Android Studio中啟動android device monitor

一般會自動鏈接到ADM中,如果沒有自動鏈接上去使用以下命令進行鏈接。
我推薦的這個模擬器是鏈接62001其他模擬器自查
adb connect 127.0.0.1:62001

安裝apk到模擬器(apk直接拉進去就自動安裝了),并使用命令啟動apk(adb如果未找到命令,請百度如何解決。)
adb shell am start -D -n com.didictf.hellolibs/com.didictf.hellolibs.MainActivity
運行命令后可通過adm看到有個紅色的蟲子圖標,這個時候apk已經掛起等待調試了。

在MainActivity下的OnCreate函數下斷點

點擊如圖的三角,選擇Edit Configurations

點擊加號,選擇Remote

修改port為8700點擊OK

點擊調試按鈕掛載到模擬器中

已經斷在我們下的斷點。

0x03 調試
上一篇文章分析得出關鍵位置在MainActivity中的onClickTest函數,這次我們直接在這里下斷點,動態(tài)調試。

模擬器隨便輸入,點擊test按鈕,就會斷在我們下的地方

點擊如圖加號添加v0 ,v1,p0監(jiān)視變量,并F8單步向下,走到58行,就會從so中返回flag到系統apk的v1變量中。

對比下反編譯的源碼,更容易分析apk的工作流程。

0x04 總結
對于這個CTF的apk,動態(tài)調試會更加直觀,下好斷點,添加監(jiān)視變量直接但步向下即可,比靜態(tài)修改重新打包來的方便。
轉載請注明出處。