這是Ghidra Encompiler和Rizin的Sleigh拆卸器的整合。它僅基於Ghidra的反編譯器部分,該部分完全寫在C ++中,因此根本不需要Ghidra本身,並且可以獨立地構建插件。該項目最初是針對Radare2的R2CON 2019提出的,作為Cutter Talk的一部分:https://youtu.be/ehtmiezr7l8?t=950
Usage: pdg # Native Ghidra decompiler plugin
| pdg # Decompile current function with the Ghidra decompiler
| pdgd # Dump the debug XML Dump
| pdgx # Dump the XML of the current decompiled function
| pdgj # Dump the current decompiled function as JSON
| pdgo # Decompile current function side by side with offsets
| pdgs # Display loaded Sleigh Languages
| pdg* # Decompiled code is returned to rizin as comment
以下config vars(用於e命令)可用於調整RZ-Ghidra的行為:
ghidra.cmt.cpp: C++ comment style
ghidra.cmt.indent: Comment indent
ghidra.indent: Indent increment
ghidra.lang: Custom Sleigh ID to override auto-detection (e.g. x86:LE:32:default)
ghidra.linelen: Max line length
ghidra.nl.brace: Newline before opening '{'
ghidra.nl.else: Newline before else
ghidra.sleighhome: SLEIGHHOME
在這裡, ghidra.sleighhome必須指向包含*.sla , *.lspec目錄,...歸檔了應由分解器支持的架構。但是,使用RZ-PM軟件包或安裝如下所示,這是自動設置的。
首先,確保獲取此存儲庫中包含的子模塊並最新:
git submodule init
git submodule update
然後,可以構建和安裝Rizin插件:
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=~/.local ..
make
make install
在這裡,將CMAKE_INSTALL_PREFIX設置為Rizin可以從中加載插件的位置。安裝步驟對於插件工作是必要的,因為它包括安裝必要的雪橇文件。如果您使用的是Git中的Rizin,也將CMAKE_PREFIX_PATH設置為Rizin安裝目錄。
要構建切刀插件,您必須在某些前綴下從源安裝切割器,可以選擇使用-DCMAKE_PREFIX_PATH=<path>指定,然後通過-DBUILD_CUTTER_PLUGIN=ON to Cmake啟用插件:
/my/path/rz-ghidra> mkdir build && cd build
/my/path/rz-ghidra/build> cmake -DBUILD_CUTTER_PLUGIN=ON -DCMAKE_PREFIX_PATH=/path/to/cutter/prefix -DCMAKE_INSTALL_PREFIX=~/.local ..
/my/path/rz-ghidra/build> make && make install
默認情況下,切割器插件安裝在當前用戶主目錄中自動選擇的路徑中。可以使用-DCUTTER_INSTALL_PLUGDIR覆蓋此路徑。
Rizin具有迅速發展的C API,因此有必要明確說明RZ-Ghidra版本與哪些版本的Rizin:Rizin:
當使用git中的rizin和rz-ghidra時:
dev沿著Rizin Branch dev 。stable在Rizin分支馬stable沿線。關於版本,RZ-Ghidra通常與Rizin同時發布,並且通常使用相同的版本號(但不能保證,不依賴這些數字!)。另外,在RIZIN發行版中, rz-0.1.2之類的標籤是在RZ-Ghidra上創建的,該標籤完全指向RZ-Ghidra版本,並表明此版本與指定的Rizin版本兼容。這些標籤可以通過分配維護者來查找如何設置依賴項。
請注意,該插件可在LGPLV3下找到,這比Ghidra的許可更嚴格!
該程序是免費的軟件:您可以根據自由軟件基金會發布的GNU較少的通用公共許可證的條款對其進行重新分配和/或修改它,無論是許可證的版本3,或(按您的選項)任何以後的版本。
該程序的分佈是希望它將有用的,但沒有任何保修;即使沒有對特定目的的適銷性或適合性的隱含保證。有關更多詳細信息,請參見GNU較少的通用公共許可證。
您應該已經收到了GNU較少的通用公共許可證的副本。如果沒有,請參見https://www.gnu.org/licenses/。