此係列是本人一個字一個字碼出來的,包括範例和實驗截圖。本人非計算機專業,可能對本教學涉及的事物沒有了解的足夠深入,如有錯誤,歡迎批評指正。 如有好的建議,歡迎反饋。碼字不易,如果本篇文章有幫助你的,如有閒錢,可以打賞支援我的創作。如想轉載,請把我的轉載資訊附在文章後面,並宣告我的個人資訊和本人部落格地址即可,但必須事先通知我。
你如果是從中間插過來看的,請仔細閱讀 跟羽夏學 Ghidra ——簡述 ,方便學習本教學。請認準 部落格園 的 寂靜的羽夏 ,目前僅在該平臺釋出。
在逆向的過程中,有時候靜態分析無法下手。動態分析也可以驗證靜態分析的結果,這就是偵錯。偵錯是任何一名程式設計師所必須的技能,不會偵錯就是一名不合格的程式設計師。
本篇不會介紹如何偵錯,只是介紹如何使用Ghidra
所提供的偵錯程式,對我們的分析檔案進行偵錯,縮短適應時間。注意:不要對惡意軟體等在真機上進行偵錯,可以通過在虛擬機器器遠端偵錯,不過本篇不會詳細涉及,只會一筆帶過。
下面我們學習如何進入偵錯程式:
開啟Ghidra
之後,點選上圖中的瓢蟲按鈕,就會啟用一個偵錯程式,如下圖所示:
可以看到,選單工具和CodeBrowser
有很多是一樣的,但是佈局有些不同且多了只有偵錯特有的表單。
下面我們熟悉一下Ghidra
偵錯程式的特有視窗的作用。
該視窗包含建立與偵錯程式的連線或啟動新的偵錯對談:
也就是說,當我們偵錯一個程式的時候,這裡就會有一個專案。
該視窗顯示正在偵錯的活動偵錯物件。從這裡可以暫停、單步等偵錯相關的操作。
可以說,這個視窗還是相當重要的呢。
在底部記憶體區域視窗、堆疊視窗和標準控制檯視窗以及監視視窗:
通過這些視窗,我們可以分析記憶體佈局,堆疊情況以及關注的地址的值的變化。
在它的右側,還有執行緒和時間視窗:
在右側,有三個十分重要的視窗——斷點、模組和暫存器:
至於其他視窗,感興趣的話自行探索。
下面開始學習如何偵錯。首先,和CodeBrowser
一樣,首次開啟分析需要開啟想要逆向的檔案:
選中turorial
之後,點選確定。我們看到了工具列有幾個圖示不再是禁用狀態,Listing
視窗也有了該程式的反組合。
看向工具列,有一個瓢蟲圖示,那個就是用來偵錯的:
這裡面有好幾種方式,具體差別我不算特別清楚,自行搜尋。
選中Debug tutorial in GDB locally IN-VM
之後,就啟用偵錯程式,最終介面如下:
本篇我們(部落格園寂靜的羽夏)介紹了Ghidra
的偵錯程式,瞭解了具體佈局。我相信用過其他圖形化偵錯程式(比如KDB
)的人都清楚如何使用了,要想熟練應用,還請多加練習。
跟羽夏學 Ghidra ——指令碼