「 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への依存をなくすことができてとてもうれしいです!