跟羽夏學 Ghidra ——調試

寫在前面

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

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

前言

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

簡介

  下面我們學習如何進入調試器:

  打開Ghidra之後,點擊上圖中的瓢蟲按鈕,就會啟用一個調試器,如下圖所示:

  可以看到,菜單工具和CodeBrowser有很多是一樣的,但是布局有些不同且多了只有調試特有的窗體。

窗口介紹

  下面我們熟悉一下Ghidra調試器的特有窗口的作用。

Debugger Targets

  該窗口包含建立與調試器的連接或啟動新的調試會話:

  也就是說,當我們調試一個程式的時候,這裡就會有一個項目。

Objects

  該窗口顯示正在調試的活動調試對象。從這裡可以暫停、單步等調試相關的操作。

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

其他

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

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

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

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

開始調試

  下面開始學習如何調試。首先,和CodeBrowser一樣,首次打開分析需要打開想要逆向的文件:

  選中turorial之後,點擊確定。我們看到了工具欄有幾個圖標不再是禁用狀態,Listing窗口也有了該程式的反彙編。
  看向工具欄,有一個瓢蟲圖標,那個就是用來調試的:

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

小結

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

下一篇

  跟羽夏學 Ghidra ——腳本