跟羽夏學 Ghidra ——初識

2022-09-12 12:01:44

寫在前面

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

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

目錄結構

  安裝軟體的第一眼,我們首先看一下它的軟體目錄結構:

docs

  包含有關Ghidra和如何使用它的支援檔案,該目錄包括兩個子目錄。首先,GhidraClass子目錄提供教學內容,幫助瞭解Ghidra。其次,languages子目錄描述了Ghidra的處理器規範語言SLEIGH

Extensions

  包含有用的預構建擴充套件以及編寫Ghidra擴充套件的重要內容和資訊。

GPL

  構成Ghidra框架一部分的一些元件不是由Ghidra團隊開發的,而是由GPL下發布的其他程式碼組成。GPL目錄包含與此內容關聯的檔案,包括許可資訊。

licenses

  包含概述Ghidra各種第三方元件的適當和合法使用的檔案。

server

  支援Ghidra伺服器的安裝,這有助於共同作業SRE。本系列教學不會涉及該相關內容。

support

  作為Ghidra各種功能的集合。此外,如果您想進一步自定義您的工作環境(例如,建立Ghidra啟動指令碼的快捷方式),也可以在這裡找到Ghidra圖示。

初識

  當我們首次啟動Ghidra時,軟體應該是這樣滴:

  Tip是該軟體的提示資訊,以幫助使用者入門使用該軟體。把它關掉,下面我們正式開始如何使用該軟體。
  Ghidra不像IDA,如果進行逆向操作,需要建立專案Project

建立專案

  點選New Project,下面開始新建專案:

  預設非共用專案,下一步:

  然後我們需要輸入專案名字,這個你隨意,我輸入WingSummerReverse,點選結束按鈕,專案就建立好了:

  榆次同時,在專案目錄路徑下,會建立一個專案名字+.rep的資料夾:

新增檔案

  下面我們需要新增編譯好的範例檔案tutorial,如下所示:

  點選Import File之後,我們選擇檔案,點選確定後會得到如下對話方塊:

  我們可以得知,該檔案是ELF格式,對於該部分,我重點介紹一下:
  Language欄位允許您指定反組合過程中應使用的處理器模組。Ghidra語言/編譯器規範可以由處理器型別、大小端規範(LE/BE)、位值(16/32/64)、處理器變數和編譯器ID(例如ARM:LE:32:v7:default)組成。在大多數情況下,Ghidra將根據從可執行檔案頭讀取的資訊選擇適當的處理器,不需要我們進行更改。
  Destination Folder欄位用於選擇將顯示新匯入檔案的專案資料夾。預設情況下顯示頂級專案資料夾,但可以新增子資料夾來組織專案中匯入的程式。
  Program NameGhidra用來指代專案中匯入的二進位制檔案的名稱,包括在專案視窗中顯示的名稱。它預設為匯入檔案的名稱,但可以更改為更具描述性的名稱,不要被它的意思所迷惑。
  點選確定,待Ghidra簡單分析後,就會獲得該檔案的相關資訊:

  如果你載入的檔案是ShellCode的純二進位制程式碼檔案,你會碰到這種情況:

  這就需要自行指定Language(該檔案由「羽雲十六進位制編輯器」的組合器生成Intel32位組合儲存的檔案):

  指定完,我們也可以指定基址等相關資訊:

開始分析

  下面我們將開始入門如何逆向了,我們雙擊要逆向的內容:

  可以看到Running Tools多了一個龍頭,也就是所謂的CodeBrowser對話方塊。
  首次,Ghidra會詢問我們是否分析,直接Yes

  然後又彈出一個表單,這個是用來選擇要分析的條目,如果可執行檔案過大,就需要挑幾個最關心的部分,直接預設即可。
  由於軟體特別小,很快就能分析完了,如下圖所示:

  從此,我們就踏入了使用Ghidra逆向的第一步。在之後的博文,我們將逐步揭開Ghidra的神祕面紗,熟悉並熟練使用它。下一篇將是十分重要的一部分,學會了它+訓練,你將掌握了Ghidra的使用,並具有能夠分析的二進位制基礎能力。

下一篇

  跟羽夏學 Ghidra ——視窗