This repository contains documentation and source code for the Binary Ninja reverse engineering platform API.
Please note that the dev branch tracks changes on the dev
build of binary ninja and is generally the place where all pull requests should be submitted to. However, the master branch tracks the stable
build of Binary Ninja which is the default version run after installation. Online documentation tracks the stable branch.
Public contributions are welcome to this repository. All the API and documentation in this repository is licensed under an MIT license, however, the API interfaces with a closed-source commercial application, Binary Ninja.
If you're interested in contributing when you submit your first PR, you'll receive a notice from CLA Assistant that allows you to sign our Contribution License Agreement online.
The issue tracker for this repository tracks not only issues with the source code contained here but also the broader Binary Ninja product.
Starting mid March 2017, the C++ portion of this API can be built into a static library (.a, .lib) that binary plugins can link against. Use Makefile on MacOS, Linux, and Windows mingw environments, and Makefile.win (nmake file) for Windows Visual Studio environment (nmake -f).
The compiled API contains names and functions you can use from your plugins, but most of the implementation is missing until you link up against libbinaryninjacore.dylib or libbinaryninjacore.dll (via import file libbinaryninjacore.lib). See the ./examples.
Since BinaryNinja is a 64-bit only product, ensure that you are using a 64-bit compiling and linking environment. Errors on windows like LNK1107 might indicate that your bits don't match.
- bin-info is a standalone executable that prints some information about a given binary to stdout
- breakpoint is a plugin that allows you to select a region within an x86 binary and use the context menu to fill it with breakpoint bytes
- print_syscalls is a standalone executable that prints the syscalls used in a given binary