
Trouvez rapidement les différences et les similitudes dans du code désassemblé.

Copyright 2011-2026 Google LLC.
Ce dépôt contient le code source de BinDiff. BinDiff est un outil open-source de comparaison de fichiers binaires pour trouver rapidement les différences et les similitudes dans le code désassemblé.
BinDiff est un outil open-source de comparaison de fichiers binaires, qui aide les chercheurs en vulnérabilités et les ingénieurs à trouver rapidement les différences et similitudes dans du code désassemblé.
Avec BinDiff, les chercheurs peuvent identifier et isoler les correctifs de vulnérabilités dans les patchs fournis par les fournisseurs. Il peut également être utilisé pour transférer des symboles et des commentaires entre les désassemblages de plusieurs versions du même binaire. Cela facilite le suivi des modifications dans le temps et permet aux organisations de conserver les résultats d’analyse et favorise le transfert de connaissances entre analystes binaires.
Si vous souhaitez simplement commencer à utiliser BinDiff, téléchargez les paquets d’installation précompilés depuis la page des versions.
Remarque : BinDiff dépend d’un désassembleur distinct. Par défaut, il est fourni avec la prise en charge d’IDA Pro, Binary Ninja et Ghidra. La page des désassembleurs répertorie les configurations prises en charge.
Un sous-ensemble du manuel existant est
disponible dans le répertoire docs/.
BinDiff contient les composants suivants :
cmake - Fichiers de build CMake déclarant les dépendances externesfixtures - Une collection de fichiers de test pour mettre à l’épreuve le moteur
central de BinDiffida - Intégration avec le désassembleur IDA Projava - Code source Java. Ceci contient l’interface utilisateur de diff visuel de BinDiff
et sa bibliothèque utilitaire correspondante.match - Algorithmes de mise en correspondance pour le moteur central de BinDiffpackaging - Sources des paquets d’installationtools - Exécutables auxiliaires livrés avec le produitLes instructions ci-dessous devraient suffire pour compiler à la fois le code natif et les composants basés sur Java.
De plus amples instructions de compilation seront ajoutées ultérieurement. Cela inclut des
Dockerfiles prêts à l’emploi et des scripts pour construire les paquets d’installation.
BinDiff utilise CMake pour générer ses fichiers de build pour les composants constitués de code C++ natif.
Les dépendances de build suivantes sont requises :
Les étapes de construction générales sont les mêmes sous Windows, Linux et macOS. Ce qui suit montre les commandes pour Linux.
Ensuite, configurez le répertoire de build et générez les fichiers de build :
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
Enfin, lancez la compilation effective. Les binaires seront placés dans build/ :
cmake --build build --config Release
(cd build; ctest --build-config Release --output-on-failure)
cmake --install build --config Release
Pour construire sans IDA, modifiez simplement l’étape de configuration ci-dessus par
cmake -S . -B build/out -G Ninja -DCMAKE_BUILD_TYPE=Release \
-DBINEXPORT_ENABLE_IDAPRO=OFF
La construction de l’interface graphique basée sur Java nécessite la bibliothèque commerciale tierce de visualisation de graphes yFiles pour l’affichage et la disposition des graphes. Cette bibliothèque est extrêmement puissante et difficilement remplaçable.
Pour construire, BinDiff utilise Gradle 6.x et Java 11 LTS. Reportez-vous à son guide d’installation pour les instructions d’installation.
Si vous êtes détenteur d’une licence yFiles, définissez la variable d’environnement YFILES_DIR
sur un répertoire contenant les fichiers y.jar et ysvg.jar de yFiles.
Remarque : BinDiff utilise toujours l’ancienne branche 2.x de yFiles.
Ensuite, lancez Gradle pour télécharger les dépendances externes et construire :
Windows :
set YFILES_DIR=<path\to\yfiles_2.17>
cd java
gradle shadowJar
Linux ou macOS :
export YFILES_DIR=<path/to/yfiles_2.17>
cd java
gradle shadowJar
Ensuite, le répertoire ui/build/libs dans le sous-répertoire java devrait
contenir l’artefact autonome bindiff-ui-all.jar, qui peut être exécuté
à l’aide de la commande standard java -jar.
Les articles originaux décrivant les idées générales derrière BinDiff :
Autres outils dans le même domaine :
Projets utilisant BinDiff :
BinDiff est sous licence Apache. Voir LICENSE pour plus d’informations.
Si vous souhaitez contribuer, veuillez lire CONTRIBUTING.md avant d’envoyer des pull requests. Vous pouvez également signaler des bugs ou soumettre des demandes de fonctionnalités.