跟羽夏學 Ghidra ——偵錯

2022-09-20 12:01:06

寫在前面

  此係列是本人一個字一個字碼出來的,包括範例和實驗截圖。本人非計算機專業,可能對本教學涉及的事物沒有了解的足夠深入,如有錯誤,歡迎批評指正。 如有好的建議,歡迎反饋。碼字不易,如果本篇文章有幫助你的,如有閒錢,可以打賞支援我的創作。如想轉載,請把我的轉載資訊附在文章後面,並宣告我的個人資訊和本人部落格地址即可,但必須事先通知我

你如果是從中間插過來看的,請仔細閱讀 跟羽夏學 Ghidra ——簡述 ,方便學習本教學。請認準 部落格園寂靜的羽夏 ,目前僅在該平臺釋出。

前言

  在逆向的過程中,有時候靜態分析無法下手。動態分析也可以驗證靜態分析的結果,這就是偵錯。偵錯是任何一名程式設計師所必須的技能,不會偵錯就是一名不合格的程式設計師。
  本篇不會介紹如何偵錯,只是介紹如何使用Ghidra所提供的偵錯程式,對我們的分析檔案進行偵錯,縮短適應時間。注意:不要對惡意軟體等在真機上進行偵錯,可以通過在虛擬機器器遠端偵錯,不過本篇不會詳細涉及,只會一筆帶過。

簡介

  下面我們學習如何進入偵錯程式:

  開啟Ghidra之後,點選上圖中的瓢蟲按鈕,就會啟用一個偵錯程式,如下圖所示:

  可以看到,選單工具和CodeBrowser有很多是一樣的,但是佈局有些不同且多了只有偵錯特有的表單。

視窗介紹

  下面我們熟悉一下Ghidra偵錯程式的特有視窗的作用。

Debugger Targets

  該視窗包含建立與偵錯程式的連線或啟動新的偵錯對談:

  也就是說,當我們偵錯一個程式的時候,這裡就會有一個專案。

Objects

  該視窗顯示正在偵錯的活動偵錯物件。從這裡可以暫停、單步等偵錯相關的操作。

  可以說,這個視窗還是相當重要的呢。

其他

  在底部記憶體區域視窗、堆疊視窗和標準控制檯視窗以及監視視窗:

  通過這些視窗,我們可以分析記憶體佈局,堆疊情況以及關注的地址的值的變化。
  在它的右側,還有執行緒和時間視窗:

  在右側,有三個十分重要的視窗——斷點、模組和暫存器:

  至於其他視窗,感興趣的話自行探索。

開始偵錯

  下面開始學習如何偵錯。首先,和CodeBrowser一樣,首次開啟分析需要開啟想要逆向的檔案:

  選中turorial之後,點選確定。我們看到了工具列有幾個圖示不再是禁用狀態,Listing視窗也有了該程式的反組合。
  看向工具列,有一個瓢蟲圖示,那個就是用來偵錯的:

  這裡面有好幾種方式,具體差別我不算特別清楚,自行搜尋。
  選中Debug tutorial in GDB locally IN-VM之後,就啟用偵錯程式,最終介面如下:

小結

  本篇我們(部落格園寂靜的羽夏)介紹了Ghidra的偵錯程式,瞭解了具體佈局。我相信用過其他圖形化偵錯程式(比如KDB)的人都清楚如何使用了,要想熟練應用,還請多加練習。

下一篇

  跟羽夏學 Ghidra ——指令碼