Bindiffhelper
GhidraプロジェクトでBindiffを使用してマッチング機能を見つけて自動的に名前を変更するGhidra拡張機能(Bindiff 6、7、8がサポートされています)。 Bindiff Manualをチェックして、機能がどのように機能し、機能 /基本ブロックとどのように一致するかを確認してください。ただし、この拡張機能により、BindiffはGhidra内から自動化されているため、バイナリを自分で差分する必要はありません。
GitHubの問題機能を介してバグを報告してください
それが何をするか / changelog
V0.6
- sqliteドライバーライブラリを更新して、Appleシリコンで実行する必要があります
- 分解された関数間の外部テキストの違いをサポートします(#24を参照)
- UIの更新
v0.5
- サポートビンディフ8
- Ghidra 11.1のリリース
V0.4.3
V0.4.2
- 関数を追加してすべての機能をインポートします(テーブルでチェックされた機能だけでなく)
- テーブル内の複数の要素のチェックボックスを切り替える関数を追加する
- Ghidra 10.3をサポートするための更新
v0.4.1
- Gradle 7.5およびGhidra 10.1をサポートするための更新
V0.4.0
V0.3.2
- 同じプロジェクトとは異なるファイルで違いが機能しなかったバグを修正しました
- 短い名前(<3文字>)を持つファイルが違いがないバグを修正しました
V0.3.1
- 「プロジェクトから」オプションを介してファイルを開くときにクラッシュを修正しました
v0.3
- リスティングの一致した機能を着色します
- 他のバイナリにリンクするリスト内の一致する関数にコメントを追加する
- 一部のビルドでProtobufライブラリが欠落しているバグを修正しました
- 新しいファイルロードメニュー
v0.2
- インポートするファイルをチェックアウトする必要があるバグを修正します。
- [プロジェクトファイルの選択]ダイアログのサイズを増やします
v0.1
- Bindiff The Binaryは、同じGhidraプロジェクトの別のバイナリでGhidraで開かれ、結果を示し、機能名をインポートします
- 2つの.binexportファイルからBindiff 6で作成されたBindiffファイルを開き、Ghidraの一致する関数名をインポートします
次のリリース
- 関数名と関数パラメーター(タイプと名前)をインポートする
- Ghidraで開いたバイナリを外部.binexport(たとえばIDAから)と比較します
- さまざまな機能のグラフを表示するためにBindiff 6 GUIとのコミュニケーション
インストール方法
Ghidraバージョンと互換性がある場合は、リリースから.Zip-Fileをダウンロードするか、以下の構築方法を確認してください。
- オープンギドラ
- メインウィンドウで: file-> install extensionsに移動します...
- 右上の + - ボタンをクリックして、Bindiffhelper zipファイルを選択します
- プラグインマネージャーを閉じます。 Ghidraを再起動して、新しいプラグインをロードします
- 以下の使用法を参照してください
推奨される他のツール
- Binexportプラグインバイナリまたは特定のGhidraバージョンのソースからコンパイルされた
- Bindiff(https://zynamics.com/software.html)
これらがなければ、ghidraプロジェクトから自動的にエクスポートして差分を行うことはできず、.bindiffファイルのみをインポートできます
使用法
Ghidraでファイルを開いてコードエクスプローラーにファイル - > configureに移動して、プラグインがコードエクスプローラーにロードされていることを確認してください
右上の小さなプラグアイコンをクリックします。
また、Bindiffhelperpluginの横にあるチェックボックスがチェックされていることを確認してください。
外部.bindiffを輸入します
対応する.binexport-filesは同じフォルダーにある必要があります。
コードブラウザに名前をインポートするファイルを開き、ウィンドウ - > bindiffhelperに移動します
Bindiffボタンまたはメニュー項目から開くことを使用して、.bindiffファイルを選択します。
インポートするすべての関数名を選択し、右上またはメニュー項目の[関数名のインポート名]ボタンをクリックします。
Ghidraプロジェクトのファイル間を比較します
Window-> bindiffhelperに移動し、BinexportまたはBindiffに関する警告がないことを確認し、 [プロジェクト]ボタンから[開く]ボタンをクリックします。
ツリーから他のファイルを選択し、[OK]をクリックします。
構築方法
要件:
- Ghidraのインストール(https://ghidra-sre.org)またはソースからコンパイル
- いくつかのJDK。 Ghidraがどのように構築されたか、使用している他のプラグインに応じて、特定の制限があるかもしれません。 Temurin 21 LTSを使用することをお勧めします。これは現在、BinexportとBindiffhelperの両方で機能しているようです。
- Gradle(7.5、8.10でテスト)
リポジトリをクローンします
それぞれのプロトコルバッファー定義のBinexportに依存するため、リポジトリを再帰的にクローンします。
git clone --recurse-submodules https://github.com/ubfx/BinDiffHelper.git
それを構築します
GHIDRA_INSTALL_DIR環境変数をGhidraインストールdirに設定する必要があります。異なるJDKがインストールされている場合は、環境変数JAVA_HOME Ghidraのインストールが使用するものを指していることを確認してください。
拡張機能は、そのGhidraバージョン用に特に構築されます。
そして、あなたのシェル内のBindiffhelperフォルダーに行き、
これにより、それぞれのサブモジュールでBinexportと親ディレクトリにBindiffhelperの両方が構築されます。 DISTディレクトリに作成された.zipファイルがあるはずです。その.zipファイルを使用して、上記の手順に従ってインストールします。
開発 /デバッグセットアップ
Ghidraと一緒に拡張機能をデバッグできると便利な場合があります。次のメモが次のとおりです。
- Ghidraをクローンして構築し、DevGuideに従ってGradleにEclipseプロジェクトを作成させます
- プロジェクトをEclipseにインポートします(拡張開発に関連するプラグインがあることを確認してください)
- Ghidradevを構築してインストールします
- Ghidraビルドを開梱し、Ghidradevをリンクします。
GHIDRA_INSTALL_DIR環境変数を設定する必要があるかもしれません - EclipseからGhidraを実行し、Binexport Extensionをインストールします
gradle build eclipseを使用してBindiffhelper Eclipseプロジェクトを作成します- それをEclipseにインポートし、Ghidradevを使用してGhidraビルドにリンクします
- as-> ghidraをデバッグします
Eclipseの拡張機能でGhidraをデバッグすると、拡張機能はGhidraに自動的にロードされます(通常の拡張機能インストールを通過しないでください)。ただし、コードエクスプローラーでプラグインを有効にする必要があります。
参照
- https://github.com/google/bindiff/releases
- https://www.zynamics.com/bindiff/manual/
- https://github.com/google/binexport/
アイコン:Fatcow無料アイコン