ghidra delinker extension
v0.5.0
この Ghidra 拡張機能を使用すると、プログラムの一部をオブジェクト ファイルとしてエクスポートできます。これらのオブジェクト ファイルには有効なメタデータ (シンボル、再配置テーブルなど) が含まれているため、さらなる処理のためにツールチェーンによって直接再利用できます。
ユースケースには次のようなものがあります。
サポートされている命令セット アーキテクチャとオブジェクト ファイルのマトリックス:
x86 | MIPS | |
---|---|---|
コフ | ✅ | |
エルフ | ✅ | ✅ |
GHIDRA_INSTALL_DIR
環境変数を定義します。gradle buildExtension
実行します。 Ghidra 拡張機能のアーカイブはdist/
ディレクトリ内に作成されます。
File > Install Extensions…
を選択して、Ghidra インスタンスに拡張機能をインストールします。File > Configure
選択して、 RelocationTableSynthesizedPlugin
プラグインを有効にします。 Relocation table synthesizer
アナライザーを実行します (ワンショット モードで利用可能)。File > Export Program…
を選択して、再配置可能なオブジェクト ファイル エクスポーターを呼び出します。再構築された再配置は、 Window > Relocation table (synthesized)
で表示できます。
オブジェクト ファイルは 3 つの部分で構成されます。
リンカーが呼び出され、オブジェクト ファイルの束から実行可能ファイルを生成すると、次の処理が行われます。
通常、再配置テーブルはこのプロセスの後に破棄され、デバッグ シンボルが保持されない場合はシンボル テーブルも破棄され、再配置不可能なセクション バイトのみが残ります。ただし、注意深く分析すると、このデータを再作成できるため、プログラムのリンクを効果的に解除してオブジェクト ファイルに戻すことができます。