
Copyright 2011-2026 Google LLC.
このリポジトリには BinDiff のソースコードが含まれています。BinDiff は、 バイナリファイルの逆アセンブルされたコードの差分や類似点をすばやく見つけるための オープンソース比較ツールです。
BinDiff は、バイナリファイル向けのオープンソース比較ツールであり、 脆弱性研究者やエンジニアが逆アセンブルされたコードの差分や類似点をすばやく 見つけるのを支援します。
BinDiff を使用すると、研究者はベンダー提供のパッチに含まれる脆弱性の修正を特定して 切り分けることができます。また、同じバイナリの複数バージョンの逆アセンブリ間で シンボルやコメントを移植するためにも使用できます。これにより、時間の経過に伴う 変更の追跡が容易になり、組織が分析結果を保持して、バイナリ分析担当者間の知識移転を 可能にします。
BinDiff の使用をすぐに開始したい場合は、リリースページから 事前ビルドされたインストールパッケージをダウンロードしてください。
注: BinDiff は別の逆アセンブラに依存しています。標準では、IDA Pro、Binary Ninja、Ghidra をサポートしています。逆アセンブラのページに、サポートされている 構成が一覧表示されています。
既存のマニュアルの一部が、
docs/ ディレクトリで入手できます。
BinDiff には次のコンポーネントが含まれています。
cmake - 外部依存関係を宣言する CMake ビルドファイルfixtures - BinDiff コアエンジンをテストするためのテストファイルの
コレクションida - IDA Pro 逆アセンブラとの統合java - Java ソースコード。BinDiff のビジュアル差分ユーザーインターフェースと、
対応するユーティリティライブラリが含まれています。match - BinDiff コアエンジン用のマッチングアルゴリズムpackaging - インストールパッケージのパッケージソースtools - 製品に同梱されるヘルパー実行ファイル以下の手順で、ネイティブコードと Java ベースのコンポーネントの両方をビルドできます。
より詳細なビルド手順は後日追加される予定です。これには、インストールパッケージを
ビルドするための既製の Dockerfile とスクリプトが含まれます。
BinDiff は、ネイティブ C++ コードで構成されるコンポーネントのビルドファイルを 生成するために CMake を使用します。
次のビルド依存関係が必要です。
一般的なビルド手順は Windows、Linux、macOS で同じです。以下は Linux でのコマンドを 示しています。
次に、ビルドディレクトリを構成してビルドファイルを生成します。
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
最後に、実際のビルドを実行します。バイナリは build/ に配置されます。
cmake --build build --config Release
(cd build; ctest --build-config Release --output-on-failure)
cmake --install build --config Release
IDA なしでビルドするには、上記の構成手順を次のように変更するだけです。
cmake -S . -B build/out -G Ninja -DCMAKE_BUILD_TYPE=Release \
-DBINEXPORT_ENABLE_IDAPRO=OFF
Java ベースの GUI をビルドするには、グラフの表示とレイアウトのために、商用の サードパーティ製グラフ可視化ライブラリ yFiles が 必要です。このライブラリは非常に強力であり、簡単に置き換えられるものではありません。
BinDiff のビルドには Gradle 6.x と Java 11 LTS を使用します。インストール方法については、 インストールガイドを参照してください。
yFiles のライセンス所有者であれば、環境変数 YFILES_DIR を、yFiles の y.jar と ysvg.jar
を含むディレクトリに設定してください。
注: BinDiff は引き続き yFiles の古い 2.x ブランチを使用しています。
次に Gradle を起動して、外部依存関係をダウンロードしてビルドします。
Windows:
set YFILES_DIR=<path\to\yfiles_2.17>
cd java
gradle shadowJar
Linux または macOS:
export YFILES_DIR=<path/to/yfiles_2.17>
cd java
gradle shadowJar
その後、java サブディレクトリ内の ui/build/libs ディレクトリに、自己完結型の
bindiff-ui-all.jar アーティファクトが含まれているはずです。これは標準の java -jar
コマンドで実行できます。
BinDiff の背後にある一般的なアイデアを概説した原著論文:
同じ問題領域の他のツール:
BinDiff を使用しているプロジェクト:
BinDiff は Apache ライセンスの条件に基づいてライセンスされています。詳細については、 LICENSE を参照してください。
貢献したい場合は、プルリクエストを送る前に CONTRIBUTING.md を お読みください。バグの報告や機能リクエストの提出もできます。