360威脅情報中心第一時間對該工具進行了詳細分析,梳理了相關說明文檔、具體的安裝使用方法,以及該軟件的相關趣聞解讀,帶你詳細了解這款強大而神秘的安全工具。

可以通過Ghidra的項目主頁或者GitHub進行下載:

360威脅情報中心對Ghidra的官方說明文檔進行了梳理,將一些必要的安裝注意事項、文件目錄介紹、使用方法、相關插件的使用等等逐一進行介紹,方便讀者對照安裝使用。

Windows 7/Windows 10(64位)

Linux(64位,最好是CentOS 7)

MacOS(10.8.3)

通過解壓縮工具解壓下載的壓縮包(7-zip,WinZIP,WinRAR)即可使用。

Ghidra直接通過壓縮包解壓即可使用,這樣的好處就是可以不用修改各種系統配置,如Windows下的注冊表,便于刪除,壞處是不能直接在桌面上或開始菜單設置快捷方式。

特定盤符,如C:\需要Administrator權限。

Ghidra會使用系統標準的TEMP目錄來存儲相關數據,用戶也可以通過修改support/launch.properties來進行修改。

Ghidra會通過path自動定位相關的java runtime和development kit版本

設置Windows下相關JDK path配置

打開系統環境變量設置選項

在path中增加<path of extracted JDK dir>\bin

Linux下下相關JDK path配置

1.解壓JDK

2.編輯~/.bahsrc

Vi ~/.bashrc

3.export PATH=<path ofextracted JDK dir>/bin:$PATH

當然用戶可能有使用特定版本java的需求,可以通過support/launch.properties中的JAVA_HOME_OVERRIDE來進行配置。不過如果該版本不符合Ghidra的需求,Ghidra是不會運行的。

切換到GhidraInstallDir目錄,運行GhidraRun.bat(Windows)或GhidraRun(linus 或macOS),即可在GUI模式下啟動Ghidra:

啟動界面如下:

Ghidra支持多人協作完成一個逆向項目,各種研究人員在自己設備上進行相關的逆向任務,并將其修改提交到公共的存儲庫中,相關配置在Ghidra Server中有詳盡的說明。

有別于傳統的GUI模式,使用者可以通過命令行模式進行批量化的反編譯工作。

Ghidra允許將其中的部分文件打包為JAR包并單獨運行,以便于更方便的通過命令行模式進行啟動,也方便于作為單獨的Java逆向工程庫。使用者可以通過<GhidraInstallDir> / support / buildGhidraJar創建單獨的Ghidra.jar文件并使用。

拓展是Ghidra的可選組件,可以執行以下操作:

用于編寫拓展Ghidra相關的功能

將其它的工具和Ghidra集成,如eclipse或IDA

其默認附加了以下的拓展項,可在<GhidraInstallDir> /Extensions中找到:

Eclipse:用于在eclipse中安裝GhidraDev eclipse插件

Ghidra:Ghidra擴展

IDAPro:和IDA互動的插件

可以通過前端的GUI進行安裝卸載

l  文件->安裝拓展

l  選擇需要安裝/卸載的拓展程序

l  重啟生效

需要對GhidraInstallDir具備寫入權限

也可以不使用GUI前端目錄,直接將擴展解壓到<GhidraInstallDir> / Ghidra / Extensions即可

用戶可以通過自定義的Ghidra腳本、插件、分析器來擴展其功能,Ghidra通過提供一個名為GhidraDev的自定義Eclipse插件來支持Eclipse中的開發,該插件可以在<GhidraInstallDir> / Extensions / Eclipse目錄中找到。

通過自帶BAT腳本啟動GUI模式:

進入之后,會有一個Tip提示,如下所示:

Ghidra是按項目進行管理的,使用者需要首先創建一個項目:

輸入項目名:

項目創建完畢之后生成一個具體的目錄,注意項目文件刪除的時候似乎不能直接通過GUI刪除,需要手動刪除:

創建好項目之后就可以導入需要反編譯的文件了:

如下所示我們反編譯測試了calc.exe計算器程序:

開始反編譯,速度相比于IDA還是慢了不少:

完成之后,項目文件下會創建對應的項目,雙擊進入:

進入之后會提示是否進行分析:

開始分析之后,右下角會有相關的進度條展示:

目前來看Ghidra是無法自動下載符號的,需要對PDB相關配置進行設置:

完成分析之后的整體界面如下所示,很有一股濃濃的JAVA風范:

由于是基于項目的,因此Ghidra中可以同時打開多個反編譯的項目,只需要直接往項目中導入文件即可:

360威脅情報中心整理了一些Ghidra反匯編界面中常見且有用的一些功能選項,并進行相關介紹:

Navigation菜單

該菜單下是一些主要操作選項:

Window菜單

該菜單下是其主要支持的功能窗口,類似于IDA中view->opensubview

其中的Python功能提供了類似IDAPython的功能,可以通過help()或直接按F1查看對應的功能說明:

腳本管理菜單

腳本管理菜單下有大量的JAVA擴展腳本,這也是目前為止筆者覺得能帶來驚喜的一個地方:

這些腳本選中后是可以直接運行的,如下所示的是字符串搜索功能:

反編譯項目對比功能

由于是以項目為單位的,因此支持對同一個項目中的反編譯項目進行對比:

具體選項如下:

不過目前看來其效果一般:

Ghidra也支持快捷鍵功能,360威脅情報中心整理了一些Ghidra中常見且有用的快捷鍵進行介紹:

和IDA一致,直接雙擊可以進入之后的地址函數:

搜索(Ctrl+SHIFT+E)

該快捷鍵用于進行搜索,類似于IDA中的alt+t

效果如下,速度對比IDA還是要慢上不少:

書簽(Ctrl+D)

該快捷鍵啟用書簽功能:

反編譯(Ctrl+E)

相當于IDA中的F5,展示反編譯后的代碼:

右鍵查看引用

類似于IDA中的Ctrl+X:

更多詳細的快捷鍵和操作可見解壓后docs文件夾中的CheatSheet.html文件:

在Ghidra發布后不久,HackerFantastic就在Twitter發布了Ghidra存在JDEWP的遠程代碼執行問題:

JDWP是指開放了一個調試端口,可以遠程訪問:

筆者默認的環境下可以看到這個JAVA的調試端口并沒有啟動:

筆者在對應的support下看到了對應的launch.sh腳本,這個腳本確實會開啟一個對應的端口,但需要通過debug和debug-supend參數啟動:

實際上我們使用的GhidraRun也是通過launch.bat進行啟動的:

只是GhidraRun使用的是bg參數,并不會激活對應的調試模式:

因此從目前來看正常的GUI啟動時不會激活該功能,但是由于launch本身是主要的啟動入口,在沒有詳細深入分析前,不排除有其他方式通過debug和debug-supend參數進行調用,因此建議手動patch代碼。

目前來看Ghidra具有反編譯功能,查看、定位反編譯后的代碼相較于IDA有優勢。不過在使用過程中發現其處理某些混淆后代碼的能力還比較欠缺,在一些界面功能上也還有較大的差距,此外基于JAVA開發的原因也使得其在性能上有一些欠缺。