这是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/。