Este repositorio contiene documentación y código fuente de las API de C++, Python y Rust para la plataforma de ingeniería inversa Binary Ninja.
La documentación en línea está disponible para las siguientes API:
Para crear la API de Binary Ninja, deberá utilizar la revisión específica que coincida con el hash del archivo api_REVISION.txt
. Este archivo debe estar ubicado en la carpeta de instalación raíz para Linux y Windows o en la subcarpeta Contents/Resources
de la aplicación en macOS. La forma más sencilla de hacerlo es clonando este repositorio (o agregándolo como un submódulo) y haciendo algo como git checkout $(cat api_REVISION.txt | awk -F/ '{print $NF}')
. La documentación sobre cómo configurar esto con algo como cmake
se puede encontrar aquí.
Para escribir complementos de Binary Ninja usando C++, necesitarás crear la API de C++. La creación de la biblioteca API se realiza de manera similar a la mayoría de los proyectos basados en CMake; Los pasos básicos se describen a continuación:
# 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
Además de la configuración de compilación predeterminada, es posible que desees:
-DBN_API_BUILD_EXAMPLES=ON
a CMake al configurar la compilación. Una vez que la compilación se haya realizado correctamente, puede instalar los complementos integrados ejecutando el destino install
. Cuando se utiliza el generador de compilación "Unix Makefiles", esto se ve así: make install
.-DHEADLESS=ON
a CMake al configurar la compilación.-DBN_INSTALL_DIR=/path/to/binaryninja
a CMake al configurar la configuración de compilación.LNK1107
pueden indicar que sus bits no coinciden. Hay muchos ejemplos disponibles. La carpeta de ejemplos de Python muestra muchas aplicaciones diferentes de la API de Python, mientras que los ejemplos de C++ incluyen:
* Requiere una licencia que admita el acceso API sin cabeza.
El rastreador de problemas para este repositorio rastrea no solo los problemas con el código fuente contenido aquí sino también el producto Binary Ninja más amplio.
Este repositorio tiene dos ramas principales, dev
y master
.
La rama dev
tiene las últimas actualizaciones y rastrea la última versión de desarrollo de Binary Ninja; Las solicitudes de extracción deben realizarse contra esta rama. La rama master
rastrea la construcción estable de Binary Ninja. Si acaba de instalar Binary Ninja por primera vez, probablemente se encuentre en el canal de versión estable.
Las contribuciones públicas son bienvenidas a este repositorio. La mayor parte de la API y la documentación de este repositorio tienen una licencia MIT; sin embargo, la API interactúa con una aplicación comercial de código cerrado, Binary Ninja. Además, la API de Rust tiene una licencia Apache 2.0.
Si está interesado en contribuir cuando envíe su primer PR, recibirá un aviso de CLA Assistant que le permitirá firmar nuestro Acuerdo de licencia de contribución en línea.
Este repositorio contiene todos nuestros complementos de plataforma disponibles aquí:
Este repositorio contiene todos los complementos de Arquitectura disponibles en las ediciones Personal y Comercial de Binary Ninja. Puede encontrar cada arquitectura aquí:
Este repositorio contiene todos nuestros complementos de tipo de vista binaria disponibles aquí:
Además de que este repositorio principal de API es de código abierto, Vector35 también tiene de código abierto los complementos Debugger y Objective-C:
Algunos componentes pueden publicarse bajo licencias de código abierto compatibles pero ligeramente diferentes y tendrán su propio archivo de LICENCIA, según corresponda.
Los componentes restantes se publican bajo una licencia MIT.
Tenga en cuenta que los archivos .lib
se incluyen en las compilaciones binarias nativas de Binary Ninja para Windows. Esos archivos lib también se publican bajo la misma licencia que este repositorio y pueden distribuirse en consecuencia.