此係列是本人一個字一個字碼出來的,包括範例和實驗截圖。本人非計算機專業,可能對本教學涉及的事物沒有了解的足夠深入,如有錯誤,歡迎批評指正。 如有好的建議,歡迎反饋。碼字不易,如果本篇文章有幫助你的,如有閒錢,可以打賞支援我的創作。如想轉載,請把我的轉載資訊附在文章後面,並宣告我的個人資訊和本人部落格地址即可,但必須事先通知我。
你如果是從中間插過來看的,請仔細閱讀 跟羽夏學 Ghidra ——簡述 ,方便學習本教學。請認準 部落格園 的 寂靜的羽夏 ,目前僅在該平臺釋出。
安裝軟體的第一眼,我們首先看一下它的軟體目錄結構:
包含有關Ghidra
和如何使用它的支援檔案,該目錄包括兩個子目錄。首先,GhidraClass
子目錄提供教學內容,幫助瞭解Ghidra
。其次,languages
子目錄描述了Ghidra
的處理器規範語言SLEIGH
。
包含有用的預構建擴充套件以及編寫Ghidra
擴充套件的重要內容和資訊。
構成Ghidra
框架一部分的一些元件不是由Ghidra
團隊開發的,而是由GPL
下發布的其他程式碼組成。GPL
目錄包含與此內容關聯的檔案,包括許可資訊。
包含概述Ghidra
各種第三方元件的適當和合法使用的檔案。
支援Ghidra
伺服器的安裝,這有助於共同作業SRE
。本系列教學不會涉及該相關內容。
作為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 ——視窗