「 BinDiff ツールの使用方法を学習しようとしていますが、できます」比較を行うために2つのバイナリを開く方法を理解します。マニュアルをざっと読んでいると、そのためにIDAProが必要なようです。
IDA Proなしで(たとえば、IDAだけで)BinDiffを使用できますか?
コメント
- 関連:BinDiffの代替 reverseengineering.stackexchange.com/q/26196/3934 ?
回答
はい、これはGhidraで可能になりました。
最新バージョンのBinDiff6 、Ghidra逆アセンブラの実験的サポートがあります。 Ghidra逆アセンブリを差分に必要な.BinExport形式にエクスポートできる拡張機能が付属しています。
必要なソフトウェア
- zynamicsのWebサイト
- 最近のJavaランタイム(OpenJDK 11以降)
- Ghidra 9.1.2( https://ghidra-sre.org/releaseNotes_9.1.2.html )
Ghidra拡張機能のインストール
BinDiffをインストールした後、「BinExport」を見つけますインストールフォルダ内の拡張子。
デフォルトは
- Windows:
C:\Program Files\BinDiff\extra\ghidra - Linux:
/opt/bindiff/extra/ghidra - macOS:
/Applications/BinDiff/Extra/Ghidra
ファイルの場合、拡張機能は他のGhidra拡張機能と同じようにインストールできます。
- Ghidraを起動し、
Fileを選択します。 |Install Extensions...。 -
+ボタンをクリックしてAdd extensionに移動します。 -
Select Extensionダイアログで、ghidra_BinExport.zipを含むディレクトリに移動します。 -
.zipを選択しますファイルを作成し、
OK -
OKをクリックして確認し、もう一度クリックして再起動メッセージを閉じます。次に、Ghidraを再起動します。
使用法
このバージョンのGhidra用のJavaベースのエクスポーターには、IDAProのネイティブC ++バージョンと比較して次の機能があります。
| | Ghidra | IDA | | --------------------------------------- | ------ | --- | | Protocol Buffer based full export | ✓¹ | ✓ | | Statistics text file | - | ✓ | | Text format for debugging | - | ✓ | | BinNavi export into PostgreSQL database | - | ✓ | ¹ No operand trees
インストールバージョンの確認
- Ghidraで、
File|Install Extensions...。 -
BinExportがリストされており、正しいInstall Path
呼び出し
- Ghidraで、プロジェクトを開くか、新しいプロジェクトを作成します。
- まだ行っていない場合は、バイナリを開いてエクスポートします。コードブラウザツールを使用して、Ghidraの初期分析を実行します。「積極的な命令ファインダー」オプションを有効にして、エクスポートのカバレッジを向上させることができます。
- プロジェクトビューで、バイナリを右クリックして、エクスポートして
Export... - ドロップダウンリストから、
Binary BinExport (v2) for BinDiff - を選択します出力ファイルのパス。これは元のファイル名にすることができます。
.BinExportが追加されます。 -
OKをクリックします。
を選択します
BinDiffエクスポートされたファイル
エクスポートされたファイルを比較して、結果をUIに表示できるようになりました。
- 上記の手順に従って2つのバイナリをエクスポートします。次の手順では、
primary.BinExportとsecondary.BinExportを想定しています。 -
コマンドラインから、BinDiffエンジンを実行します。 with
bindiff primary.BinExport secondary.BinExportこれにより、現在のディレクトリにファイル
primary_vs_secondary.BinDiffが作成されます。bindiffコマンドをシステムパスに含める必要があります。 -
bindiff --uiまたはオペレーティングシステムのランチャーを使用します。 -
新しいワークスペースを作成するか、既存のワークスペースを開きます。
-
Diffs|Add Existing Diff...を選択します。 -
、手順2で作成した
primary_vs_secondary.BinDiffを選択します。 -
OK、続いてAdd。差分が左側のツリービューに表示され、ダブルクリックして開くことができます。 -
通常はBinDiffを使用して、一致した関数のコールグラフまたはフローグラフを表示します。 。
オープンソース
最後に、BinExport拡張機能(およびIDA Proプラグイン)はオープンソースであり、利用可能です GitHubで。 v11タグはBinDiff6に対応します。
コメント
- ありがとうございます。 ' IDA Proへの依存をなくすことができてとてもうれしいです!