これは、RizinのGhidra DecompilerとSlaigh Resassemblerの統合です。これは、完全にC ++で書かれているGhidraの分解者部分にのみ基づいているため、Ghidra自体はまったく必要なく、プラグインを自己完結型に構築できます。このプロジェクトは、最初はカッタートークの一部としてR2CON 2019でRadare2用に発表されました: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
次の構成VAR( 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リジンがプラグインをロードできる場所に設定します。インストールステップは、必要なShalighファイルのインストールが含まれているため、プラグインが動作するために必要です。 GITのRizinを使用している場合は、 CMAKE_PREFIX_PATH Rizinインストールディレクトリに設定します。
また、カッタープラグインを構築するには、いくつかのプレフィックスの下にソースからカッターをインストールする必要があります。これはオプションで-DBUILD_CUTTER_PLUGIN=ON -DCMAKE_PREFIX_PATH=<path>で指定できます。
/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のバージョンが互換性があるかを明示する必要があります。
GitのRizinとRZ-Ghidraを使用する場合:
dev 、Rizin Branch devに沿って続きます。stable 、リジン枝のstableに沿って追跡されます。リリースに関しては、RZ-Ghidraは一般にRizinと同時にリリースされ、多くの場合、同じバージョン番号を使用します(ただし、保証されていませんが、これらの数値に依存しません!)。また、すべてのRizinリリースとともに、RZ-Ghidraにrz-0.1.2のようなタグが作成されます。RZ-GhidraはRZ-Ghidraリリースを正確に指し、このリリースが指定されたRizinバージョンと互換性があることを示しています。これらのタグは、依存関係をセットアップする方法を検索するために、ディストリビューションメンテナーで使用できます。
このプラグインはLGPLV3で利用できることに注意してください。これはGhidraのライセンスよりも厳格です。
このプログラムはフリーソフトウェアです。フリーソフトウェア財団、ライセンスのバージョン3、または(オプションで)後のバージョンのいずれかで公開されているGNU以下の一般公開ライセンスの条件の下で、再配布したり、変更したりできます。
このプログラムは、それが有用であることを期待して配布されますが、保証はありません。商品性や特定の目的に対するフィットネスの暗黙の保証さえありません。詳細については、GNU以下の一般公開ライセンスを参照してください。
このプログラムとともに、GNU Lesser一般公開ライセンスのコピーを受け取る必要があります。そうでない場合は、https://www.gnu.org/licenses/を参照してください。