Ce référentiel contient la documentation et le code source des API C++, Python et Rust pour la plateforme d'ingénierie inverse Binary Ninja.
Une documentation en ligne est disponible pour les API suivantes :
Afin de créer l'API Binary Ninja, vous devrez utiliser la révision spécifique qui correspond au hachage du fichier api_REVISION.txt
. Ce fichier doit se trouver dans le dossier d'installation racine pour Linux et Windows ou dans le sous-dossier Contents/Resources
de l'application sur macOS. Le moyen le plus simple de procéder est de cloner ce référentiel (ou de l'ajouter en tant que sous-module) et de faire quelque chose comme git checkout $(cat api_REVISION.txt | awk -F/ '{print $NF}')
. La documentation expliquant comment configurer cela avec quelque chose comme cmake
peut être trouvée ici.
Pour écrire des plugins Binary Ninja en utilisant C++, vous devrez créer l'API C++. La construction de la bibliothèque API se fait de la même manière que la plupart des projets basés sur CMake ; les étapes de base sont décrites comme suit :
# Get the source
git clone https://github.com/Vector35/binaryninja-api.git
cd binaryninja-api
git submodule update --init --recursive
# Configure an out-of-source build setup
cmake -S . -B build # (additional arguments go here if needed)
# Compile
cmake --build build -j8
En plus de la configuration de build par défaut, vous souhaiterez peut-être :
-DBN_API_BUILD_EXAMPLES=ON
à CMake lors de la configuration de la build. Une fois la construction réussie, vous pouvez installer les plugins générés en exécutant la cible install
. Lorsque vous utilisez le générateur de build "Unix Makefiles", cela ressemble à : make install
.-DHEADLESS=ON
à CMake lors de la configuration de la version.-DBN_INSTALL_DIR=/path/to/binaryninja
à CMake lors de la configuration de la configuration de build.LNK1107
peuvent indiquer que vos bits ne correspondent pas. Il existe de nombreux exemples disponibles. Le dossier d'exemples Python présente de nombreuses applications différentes de l'API Python, tandis que les exemples C++ incluent :
* Nécessite une licence prenant en charge l'accès API sans tête.
Le système de suivi des problèmes de ce référentiel suit non seulement les problèmes liés au code source contenu ici, mais également au produit Binary Ninja plus large.
Ce référentiel comporte deux branches principales dev
et master
.
La branche dev
dispose des dernières mises à jour et suit la dernière version de développement de Binary Ninja ; des demandes d'extraction doivent être effectuées sur cette branche. La branche master
suit la version stable de Binary Ninja. Si vous venez d'installer Binary Ninja pour la première fois, vous êtes probablement sur la version stable.
Les contributions publiques sont les bienvenues dans ce référentiel. La plupart de l'API et de la documentation de ce référentiel sont sous licence MIT, cependant, l'API s'interface avec une application commerciale fermée, Binary Ninja. De plus, l'API Rust est sous licence Apache 2.0.
Si vous souhaitez contribuer lorsque vous soumettez votre premier PR, vous recevrez un avis de CLA Assistant qui vous permettra de signer notre accord de licence de contribution en ligne.
Ce référentiel contient tous nos plugins Platform disponibles ici :
Ce référentiel contient tous les plugins d'architecture disponibles dans les éditions personnelles et commerciales de Binary Ninja. Vous pouvez trouver chaque architecture ici :
Ce référentiel contient tous nos plugins Binary View Type disponibles ici :
En plus du fait que ce référentiel d'API principal est open source, Vector35 propose également le débogueur et les plugins Objective-C open source :
Certains composants peuvent être publiés sous des licences open source compatibles mais légèrement différentes et auront leur propre fichier LICENSE, le cas échéant.
Les composants restants sont publiés sous licence MIT.
Notez que les fichiers .lib
sont inclus dans les versions binaires natives de Binary Ninja pour Windows. Ces fichiers lib sont également publiés sous la même licence que ce référentiel et peuvent être distribués en conséquence.