Este repositório contém documentação e código-fonte das APIs C++, Python e Rust para a plataforma de engenharia reversa Binary Ninja.
A documentação online está disponível para as seguintes APIs:
Para construir a API Binary Ninja, você precisará usar a revisão específica que corresponde ao hash do arquivo api_REVISION.txt
. Este arquivo deve estar localizado na pasta de instalação raiz para Linux e Windows ou na subpasta Contents/Resources
do aplicativo no macOS. A maneira mais fácil de fazer isso é clonar este repositório (ou adicioná-lo como um submódulo) e fazer algo como git checkout $(cat api_REVISION.txt | awk -F/ '{print $NF}')
. A documentação sobre como configurar isso com algo como cmake
pode ser encontrada aqui.
Para escrever plug-ins Binary Ninja usando C++, você precisará construir a API C++. A construção da biblioteca API é feita de forma semelhante à maioria dos projetos baseados em CMake; as etapas básicas são descritas a seguir:
# 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
Além da configuração de compilação padrão, você pode querer:
-DBN_API_BUILD_EXAMPLES=ON
para CMake ao configurar a construção. Depois que a compilação for bem-sucedida, você poderá instalar os plug-ins compilados executando o destino install
. Ao usar o gerador de compilação "Unix Makefiles", isso se parece com: make install
.-DHEADLESS=ON
para CMake ao configurar a construção.-DBN_INSTALL_DIR=/path/to/binaryninja
para CMake ao configurar a configuração de compilação.LNK1107
podem indicar que seus bits não correspondem. Existem muitos exemplos disponíveis. A pasta de exemplos Python demonstra muitas aplicações diferentes da API Python, enquanto os exemplos C++ incluem:
* Requer licença com suporte para acesso à API headless.
O rastreador de problemas deste repositório rastreia não apenas problemas com o código-fonte contido aqui, mas também com o produto Binary Ninja mais amplo.
Este repositório possui dois ramos principais dev
e master
.
O ramo dev
tem as atualizações mais recentes e rastreia a versão de desenvolvimento mais recente do Binary Ninja; solicitações pull devem ser feitas neste branch. O branch master
rastreia a construção estável do Binary Ninja. Se você acabou de instalar o Binary Ninja pela primeira vez, provavelmente está no canal de lançamento estável.
Contribuições públicas são bem-vindas neste repositório. A maior parte da API e da documentação neste repositório é licenciada sob uma licença MIT, no entanto, a API faz interface com um aplicativo comercial de código fechado, Binary Ninja. Além disso, a API Rust é licenciada sob uma licença Apache 2.0.
Se estiver interessado em contribuir ao enviar seu primeiro PR, você receberá um aviso do CLA Assistant que lhe permitirá assinar nosso Contrato de Licença de Contribuição online.
Este repositório contém todos os nossos plugins da plataforma disponíveis aqui:
Este repositório contém todos os plugins de arquitetura disponíveis nas edições Pessoal e Comercial do Binary Ninja. Você pode encontrar cada arquitetura aqui:
Este repositório contém todos os nossos plugins Binary View Type disponíveis aqui:
Além de este repositório principal da API ser de código aberto, o Vector35 também possui o código aberto do Debugger e dos plugins Objective-C:
Alguns componentes podem ser lançados sob licenças de código aberto compatíveis, mas ligeiramente diferentes, e terão seu próprio arquivo LICENSE, conforme apropriado.
Os componentes restantes são lançados sob uma licença do MIT.
Observe que os arquivos .lib
estão incluídos nas compilações binárias nativas do Binary Ninja para Windows. Esses arquivos lib também são lançados sob a mesma licença deste repositório e podem ser distribuídos de acordo.