跟羽夏學 Ghidra ——初識

寫在前面

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

你如果是從中間插過來看的,請仔細閱讀 跟羽夏學 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 Name是Ghidra用來指代項目中導入的二進位文件的名稱,包括在項目窗口中顯示的名稱。它默認為導入文件的名稱,但可以更改為更具描述性的名稱,不要被它的意思所迷惑。
  點擊確定,待Ghidra簡單分析後,就會獲得該文件的相關資訊:

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

  這就需要自行指定Language(該文件由「羽雲十六進位編輯器」的彙編器生成Intel的32位彙編保存的文件):

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

開始分析

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

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

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

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

下一篇

  跟羽夏學 Ghidra ——窗口