Android Studio 3.6 調試 smali的全過程
Android Studio 3.6 正式版終于發(fā)布了,快來圍觀,點擊查看。
簡介
Smali是用于Dalvik(Android虛擬機)的反匯編程序實現(xiàn),匯編工具(將Smali代碼匯編為dex文件)為smali.jar,與之對應的baksmali.jar則是反匯編程序(下載地址),官方所說的基于Jasmin/dedexer語法,實際根不知道是什么鬼……
Smali支持注解、調試信息、行數(shù)信息等基本Java的基本特性,可以說是很接近Java編譯在JVM上的中間語言了,一般用來做Android程序的逆向工程,還可以。。搞搞小名堂
個人認為Smali只是用于做反匯編的一種語言實現(xiàn),如果可以,自己也能定義一套這樣的語言,實現(xiàn)反匯編的效果
好了,下面看下正文。
以前在Android Studio中調試 smali 還是非常麻煩的時候,配置不好就是
Error running Smali: Unable to open debugger port (localhost:8700): java.io.IOException "handshake failed - connection prematurally closed
目前最新版的 Android Studio 利用附加功能調試 smali 非常方便 ,操作步驟如下:
文中會用到工具及下載地址:
①、apktool.jar(目前最新版 v2.4.1),用于反編譯smali,
下載地址: https://ibotpeaches.github.io/Apktool/
②、Android Studio (目前最新版本 3.6)用于Android開發(fā)調試IDE,
下載地址: https://developer.android.google.cn/studio/
③、smalidea-0.05.zip (目前最新版 0.05),AS 插件,用來給smali下斷點,單步調試,
下載地址 https://bitbucket.org/JesusFreke/smali/downloads/
1. 先配置好Android Studio開發(fā)環(huán)境,這步就略去2. Android Studio中安裝 smalidea 插件,先從官網(wǎng)下載 smalidea zip包,然后在 Android 中依次選擇:
File --> Setting 將會彈出設置對話框
然后在設置對話框依次選擇: Plugins --> <設置圖標> --> Install Plugin from Disk...
在彈出選擇對話框中,找到下載好的 smalidea 壓縮包,選擇ok即可
至此,插件安裝就完成了,關閉 Android Studio
3. 用 apktool 反編譯 apk
使用命令 : java.exe -jar apktool.jar d -f <xxxx.apk> -o <xxxx目錄>
也可以直接使用 ApkTool 集成環(huán)境(如果反編譯失敗可以替換其中的 apktool.jar 至最新版):
在 反編譯出來的 AndroidManifest.xml 的 application 節(jié)點添加 android:debuggable="true"
然后在 主 Activity 中加入 invoke-static {},Landroid/os/Debug;->waitForDebugger()V
重建且簽名 apk
安裝 重建后的 apk 到手機
(這步如果重新打包失敗,可以安裝原始包,把手機 root 配置/default.prop 的 ro.debuggable=1 開啟全局調試。
然后用命令啟動 Activiry : adb shell am start -D -n package屬性的值/android:name屬性的值 )
4. 將 反編譯工程導入到 Android Studio
默認選擇 Create project from existing sources ,一路 next ,最后點擊 Finish 即可
用 Project 視圖,在項目目錄右鍵 --> Mark Directory as ... --> Sources root
5. 展開 smali 目錄選擇剛才添加 waitForDebugger 代碼的 smali 文件下一行下斷點
6. 運行手機上安裝的apk(apk會假死停在 waitForDebugger 代碼處,等待調試器)。
7.在Android Studio選擇附加
此時,已經(jīng) Attach 到進程中,可以快樂的調試了
總結
到此這篇關于Android Studio 3.6 調試 smali的全過程的文章就介紹到這了,更多相關Android Studio 3.6 調試 smali內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Android實現(xiàn)知乎選項卡動態(tài)隱藏效果實例
選項卡相信對大家來說應該不陌生,最近發(fā)現(xiàn)知乎選項卡的動態(tài)隱藏效果不錯,下面這篇文章主要給大家介紹了關于Android實現(xiàn)知乎選項卡動態(tài)隱藏效果的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧。2018-02-02Android中TextView實現(xiàn)部分文字可點擊跳轉
這篇文章主要為大家詳細介紹了Android中TextView實現(xiàn)部分文字可點擊跳轉的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-10-10一篇文章弄懂Android自定義viewgroup的相關難點
這篇文章主要給大家介紹了關于如何通過一篇文章弄懂Android中自定義viewgroup的一些相關難點,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2018-06-06Android自定義view實現(xiàn)TextView方形輸入框
這篇文章主要為大家詳細介紹了Android自定義view實現(xiàn)TextView方形輸入框,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-06-06Android實現(xiàn)將一個Activity設置成窗口樣式的方法
這篇文章主要介紹了Android實現(xiàn)將一個Activity設置成窗口樣式的方法,涉及Android的窗口樣式設置與布局技巧,具有一定參考借鑒價值,需要的朋友可以參考下2016-02-02Android基于TextView實現(xiàn)的跑馬燈效果實例
這篇文章主要介紹了Android基于TextView實現(xiàn)的跑馬燈效果,以完整實例形式分析了Android使用TextView通過屬性設置及功能代碼實現(xiàn)跑馬燈效果的相關技巧,需要的朋友可以參考下2016-02-02