Dieses Repository enthält Dokumentation und Quellcode der C++-, Python- und Rust-APIs für die Reverse-Engineering-Plattform Binary Ninja.
Für die folgenden APIs ist eine Online-Dokumentation verfügbar:
Um die Binary Ninja API zu erstellen, müssen Sie die spezifische Revision verwenden, die dem Hash aus der Datei api_REVISION.txt
entspricht. Diese Datei sollte sich im Stamminstallationsordner für Linux und Windows oder im Unterordner Contents/Resources
der App unter macOS befinden. Der einfachste Weg, dies zu tun, besteht darin, dieses Repository zu klonen (oder als Submodul hinzuzufügen) und etwas wie git checkout $(cat api_REVISION.txt | awk -F/ '{print $NF}')
auszuführen. Eine Dokumentation dazu, wie Sie dies mit etwas wie cmake
einrichten, finden Sie hier.
Um Binary Ninja-Plugins mit C++ zu schreiben, müssen Sie die C++-API erstellen. Der Aufbau der API-Bibliothek erfolgt ähnlich wie bei den meisten CMake-basierten Projekten; Die grundlegenden Schritte sind wie folgt beschrieben:
# 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
Zusätzlich zum Standard-Build-Setup möchten Sie möglicherweise Folgendes tun:
-DBN_API_BUILD_EXAMPLES=ON
an CMake. Nachdem der Build erfolgreich war, können Sie die erstellten Plugins installieren, indem Sie das install
ausführen. Bei Verwendung des Build-Generators „Unix Makefiles“ sieht das so aus: make install
.-DHEADLESS=ON
an CMake.-DBN_INSTALL_DIR=/path/to/binaryninja
an CMake übergeben.LNK1107
können darauf hinweisen, dass Ihre Bits nicht übereinstimmen. Es gibt viele Beispiele. Der Ordner „Python-Beispiele“ demonstriert viele verschiedene Anwendungen der Python-API, während C++-Beispiele Folgendes umfassen:
* Erfordert eine Lizenz, die den Headless-API-Zugriff unterstützt.
Der Issue-Tracker für dieses Repository verfolgt nicht nur Probleme mit dem hier enthaltenen Quellcode, sondern auch mit dem umfassenderen Binary Ninja-Produkt.
Dieses Repository verfügt über zwei Hauptzweige: dev
und master
.
Der dev
verfügt über die neuesten Updates und verfolgt den neuesten Entwicklungs-Build von Binary Ninja; Für diesen Zweig sollten Pull-Anfragen gestellt werden. Der master
-Zweig verfolgt den stabilen Build von Binary Ninja. Wenn Sie Binary Ninja gerade zum ersten Mal installiert haben, befinden Sie sich wahrscheinlich auf dem stabilen Release-Kanal.
Öffentliche Beiträge sind in diesem Repository willkommen. Der Großteil der API und Dokumentation in diesem Repository ist unter einer MIT-Lizenz lizenziert, die API ist jedoch mit einer kommerziellen Closed-Source-Anwendung, Binary Ninja, verbunden. Darüber hinaus ist die Rust-API unter einer Apache 2.0-Lizenz lizenziert.
Wenn Sie bei der Einreichung Ihrer ersten PR daran interessiert sind, einen Beitrag zu leisten, erhalten Sie eine Benachrichtigung von CLA Assistant, mit der Sie unsere Beitragslizenzvereinbarung online unterzeichnen können.
Dieses Repository enthält alle unsere Plattform-Plugins, die hier verfügbar sind:
Dieses Repository enthält alle Architektur-Plugins, die in den Personal- und Commercial-Editionen von Binary Ninja verfügbar sind. Die einzelnen Architekturen finden Sie hier:
Dieses Repository enthält alle unsere hier verfügbaren Binary View Type-Plugins:
Zusätzlich dazu, dass dieses Haupt-API-Repository Open Source ist, hat Vector35 auch den Debugger und die Objective-C-Plugins als Open Source bereitgestellt:
Einige Komponenten werden möglicherweise unter kompatiblen, aber leicht unterschiedlichen Open-Source-Lizenzen veröffentlicht und verfügen gegebenenfalls über eine eigene LIZENZdatei.
Die restlichen Komponenten werden unter einer MIT-Lizenz veröffentlicht.
Beachten Sie, dass .lib
Dateien in den nativen Binär-Builds von Binary Ninja für Windows enthalten sind. Diese lib-Dateien werden ebenfalls unter derselben Lizenz wie dieses Repository veröffentlicht und dürfen entsprechend verteilt werden.