Smali 是安卓 Apk 反編譯出來的格式,類似于我們 PC 上面的彙編語言。
文法可以參考這個文章:
https://blog.csdn.net/yuanguozhengjust/article/details/80493963
PC 上的反編譯調試工具用 OD 和 IDA(這個也可以調試 Android ),我們這一節想說說 Android Studio 調試 Smali 的 方法。
為什麼要做這個調試?我們按正常的邏輯是 Smali 檔案轉化成 java 去看,先看個大概,然後如果是運算之類的,我們有時候需要調試,不斷驗證變量值。那麼調試就顯得很重要。
先放之前的幾個調試文章:
安卓從入門到進階第四章(調試方法)
C 的調試
然後接下來我們補充 Smali 的調試,把 Android 上的調試政策講完。
1 下載下傳 Smalidea 包
從https://bitbucket.org/JesusFreke/smali/downloads/
下載下傳 smalidea-0.05.zip ,獨立的 jar 包是反編譯和打包工具,自己想研究可以下載下傳看看,這裡我們不用。
2 Android studio 安裝 Smali 插件
File -- Settings 搜尋 plugins 選擇從Disk加載
3 下載下傳反編譯 Apk 工具 APKDB
從https://www.duote.com/soft/73200.html
下載下傳下來安裝就可以了。
4 反編譯 Apk
拿到我們需要調試的 Apk ,選擇 Apk,右鍵菜單,使用 APKDB 編譯
一路回車就可以了。編譯完會在目前目錄下出來一個同名字的目錄,就是反編譯出來的内容。
然後删掉 original 目錄。
5 将我們反編譯出來的目錄,導入 Android Studio.
選擇我們的目錄,一路下一步即可。
6 額外備注
目前我的手機是 ROOT 版本,Apk 不需要調試版本,直接安裝運作起來。不是 ROOT 版本,就配置成調試版。(xml配置 android:debuggable="true")
7 開始調試
運作Apk,然後使用 Run -- Attach .... Process 選擇我們的包名,點選确定即可。
然後在我們需要斷下的地方,設定斷點,這裡設定在 onclick 方法裡面。
$1 代表匿名類。然後我們點選 Apk 中的按鈕,就會在這裡斷下來。
剩下的就是你自由發揮了。
--完--
安卓從入門到進階第二篇(架構流程) 推薦你讀: Android 系統各個版本上https的抓包Kotlin與Java的不同之處
掃一掃 關注我的公衆号 如果你想要跟大家分享你的文章,歡迎投稿~