Android調試系列—使用android studio調試smali代碼

來源:互聯網
上載者:User

標籤:

1、工具介紹

使用工具

android killer:用於反編譯apk包,得到smali代碼

android studio:調試smali代碼工具,或者使用idea,android studio就是在idea的基礎上修改的

smalidea-0.03.zip:  as外掛程式,需要安裝到android studio中 ,

模擬器或者或者真機:運行要調試的程式

樣本:使用網路上的某apk程式, 

 

2、前期準備

2.1  手機或者模擬器安裝應用

adb instll GGNdkTest1.apk

2.2  使用android killer反組譯碼測試包GGNdkTest1包,產生smali檔案夾

2.3  android studio安裝smalidea-0.03外掛程式,點擊File->Settings->plugins->instal plugins from disk,選擇下載的zip包就行,不要解壓。安裝完成後,AS提示重啟生效,重啟即可

 

2.3  AS匯入工程,選擇上一步的smali目錄,一路next,最後結果如

 

3、調試步驟

3.1  配置AS調試配置,Run->Edit configurations,點擊+號,建立remote類型調試器,設定Name, 修改連接埠號碼,可以選擇被佔用的任意連接埠,本次設定為8800

 

3.2 在AS的終端以偵錯模式啟動應用,進程掛起,此時運行命令查看該應用的進程號為28881

 

3.3  設定連接埠轉寄,這條命令的含義可以認為是在本地8800連接埠與手機28881進程之間建立一條通道,當開始調試時,AS串連本地的8800連接埠,通過這條通道控製程序的運行

 

3.4  下斷點,為了清除起見,在左側欄滑鼠右鍵選擇顯示行號,在行號旁邊單擊即可下斷點,需要注意的是,smali並不是每一行都可以下斷點,當下斷點沒有成功時,選擇其他地方下斷點測試。

 

3.5  調試 run->debug選擇剛才新增的調試器,此時程式會斷在設定的斷點的行,調試器解密如下

 

左側debug欄最上面一行有運行、單步運行、進入函數、強制進入、跳出等按鈕,下面顯示的是調用棧

中間variables欄可以觀察變數的值

右側watch欄可以關心的寄存器,例如的v1。

4、總結

在網上搜尋了一些教程,什麼開啟ddms,設定8700或者什麼連接埠,再關閉ddms之類的,各種方法滿天飛,看的最迷茫的就是ddms的開啟關閉和連接埠的設定。

根據網上搜到的內容自己總結了下,如所示

adbd:運行在手機端,daemon進程,與adb server通訊,同時與手機端的debugger通訊,調試各個程式

adbServer:運行在PC,與adbd通訊,同時監聽5037連接埠。

DDMS: 1、串連5037連接埠。

                2、監視每個進程,並為每個進程建立單獨的調試連接埠,例如8600、8601等等,各種調試器可以直接連接這些連接埠進行調試。

                3、提供一個特殊調試連接埠8700,它可以接收8600、8601…這些連接埠的資料,並與手機的任何進程進行通訊。

                3、自身提供一些手段可以調試每個進程。

Debugger:各種調試器,可以選擇串連8700或者其他每個進程單獨的調試連接埠。

知道了上述各個組件的作用,那麼一下幾種情境可以正常工作

1、開啟DDMS,調試器串連8700連接埠,不需要設定連接埠轉寄,可成功調試

2、開啟DDMS,調試器串連86**連接埠,不需要設定連接埠轉寄,可成功調試

3、不開啟DDMS,查看要調試的進程ID,設定連接埠轉寄(上述步驟3.3),可成功調試

前兩個比較容易理解,第三個也可以成功,有些不明白了就

先查看連接埠資訊

當執行完連接埠轉寄後,8800連接埠處於監聽狀態,並且和5037同輸入adb server進程

當開始調試時,AS進程串連到了adb的8800連接埠。

所以猜測是這樣,adb server 預設監聽5037連接埠,DDMS可以通過5037連接埠調試進程,調試器通過DDMS串連adb server。

當執行連接埠轉寄後,adb server監聽了另外一個連接埠8800,所以debugger可以直接連接該連接埠進行調試,而不需要經過DDMS

 

個人猜測,有錯誤的地方,還請大牛指正

Android調試系列—使用android studio調試smali代碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.