
Finden Sie schnell Unterschiede und Gemeinsamkeiten in disassembliertem Code.

Copyright 2011-2026 Google LLC.
Dieses Repository enthält den BinDiff-Quellcode. BinDiff ist ein Open-Source-Werkzeug zum Vergleich von Binärdateien, mit dem Unterschiede und Gemeinsamkeiten in disassembliertem Code schnell gefunden werden können.
BinDiff ist ein Open-Source-Vergleichswerkzeug für Binärdateien, das Sicherheitsforschern und Ingenieuren hilft, schnell Unterschiede und Gemeinsamkeiten in disassembliertem Code zu finden.
Mit BinDiff können Forscher Korrekturen für Schwachstellen in vom Anbieter bereitgestellten Patches identifizieren und isolieren. Es kann auch verwendet werden, um Symbole und Kommentare zwischen Disassemblierungen mehrerer Versionen derselben Binärdatei zu übertragen. Dies erleichtert die Verfolgung von Änderungen im Laufe der Zeit, ermöglicht es Organisationen, Analyseergebnisse zu behalten und fördert den Wissenstransfer unter Binäranalysten.
Wenn Sie einfach mit BinDiff loslegen möchten, laden Sie vorgefertigte Installationspakete von der Releases-Seite herunter.
Hinweis: BinDiff ist auf einen separaten Disassembler angewiesen. Standardmäßig wird Unterstützung für IDA Pro, Binary Ninja und Ghidra mitgeliefert. Die Disassembler-Seite listet die unterstützten Konfigurationen auf.
Ein Teil des vorhandenen Handbuchs ist im docs/-Verzeichnis verfügbar.
BinDiff enthält die folgenden Komponenten:
cmake - CMake-Builddateien, die externe Abhängigkeiten deklarierenfixtures - Eine Sammlung von Testdateien, um die BinDiff-Kern-Engine zu testenida - Integration in den IDA-Pro-Disassemblerjava - Java-Quellcode. Enthält die visuelle Diff-Benutzeroberfläche von BinDiff und die zugehörige Hilfsbibliothek.match - Matching-Algorithmen für die BinDiff-Kern-Enginepackaging - Paketquellen für die Installationspaketetools - Hilfsprogramme, die mit dem Produkt ausgeliefert werdenDie folgenden Anweisungen sollten ausreichen, um sowohl den nativen Code als auch die Java-basierten Komponenten zu erstellen.
Detailliertere Build-Anweisungen werden zu einem späteren Zeitpunkt hinzugefügt. Dazu gehören vorgefertigte Dockerfiles und Skripte zum Erstellen der Installationspakete.
BinDiff verwendet CMake, um die Build-Dateien für die Komponenten zu erzeugen, die aus nativem C++-Code bestehen.
Die folgenden Build-Abhängigkeiten sind erforderlich:
Die allgemeinen Build-Schritte sind unter Windows, Linux und macOS identisch. Im Folgenden werden die Befehle für Linux gezeigt.
Konfigurieren Sie als Nächstes das Build-Verzeichnis und erzeugen Sie die Build-Dateien:
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
Rufen Sie schließlich den eigentlichen Build auf. Die Binärdateien werden in build/ abgelegt:
cmake --build build --config Release
(cd build; ctest --build-config Release --output-on-failure)
cmake --install build --config Release
Um ohne IDA zu erstellen, ändern Sie einfach den obigen Konfigurationsschritt zu:
cmake -S . -B build/out -G Ninja -DCMAKE_BUILD_TYPE=Release \
-DBINEXPORT_ENABLE_IDAPRO=OFF
Für die Erstellung der Java-basierten GUI ist die kommerzielle Graph-Visualisierungsbibliothek von Drittanbietern yFiles für die Anzeige und das Layout von Graphen erforderlich. Diese Bibliothek ist äußerst leistungsfähig und nicht einfach zu ersetzen.
Zum Erstellen verwendet BinDiff Gradle 6.x und Java 11 LTS. Informationen zur Installation finden Sie in der Installationsanleitung.
Wenn Sie über eine yFiles-Lizenz verfügen, setzen Sie die Umgebungsvariable YFILES_DIR auf ein Verzeichnis, das die yFiles-Dateien y.jar und ysvg.jar enthält.
Hinweis: BinDiff verwendet weiterhin den älteren 2.x-Zweig von yFiles.
Rufen Sie dann Gradle auf, um externe Abhängigkeiten herunterzuladen und zu erstellen:
Windows:
set YFILES_DIR=<path\to\yfiles_2.17>
cd java
gradle shadowJar
Linux oder macOS:
export YFILES_DIR=<path/to/yfiles_2.17>
cd java
gradle shadowJar
Danach sollte das Verzeichnis ui/build/libs im Unterverzeichnis java das eigenständige Artefakt bindiff-ui-all.jar enthalten, das mit dem Standardbefehl java -jar ausgeführt werden kann.
Die ursprünglichen Veröffentlichungen, die die allgemeinen Ideen hinter BinDiff umreißen:
Andere Werkzeuge im gleichen Problembereich:
Projekte, die BinDiff verwenden:
BinDiff ist unter den Bedingungen der Apache-Lizenz lizenziert. Weitere Informationen finden Sie in LICENSE.
Wenn Sie einen Beitrag leisten möchten, lesen Sie bitte CONTRIBUTING.md, bevor Sie Pull-Requests senden. Sie können auch Fehler melden oder Feature-Anfragen einreichen.