Public API, examples, documentation and issues for Binary Ninja
C++ Python C CSS HTML JavaScript Other
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
api-docs increase version number in api docs Sep 1, 2017
docs update user docs example to use dest.name Aug 20, 2018
examples Fix CMakeLists.txt for both mlil_parser and llil_parser examples (#1061) Jul 25, 2018
json Merge branch 'dev' into dev Mar 16, 2017
mkdocs-material more work on getting started, new documentation help, remove head links Jul 28, 2016
python api: add methods to get basic block objects from IL instrs Aug 20, 2018
scripts Various Python 3 support changes Jul 10, 2018
sphinx_rtd_theme adding modified sphinx_rtd with red color Jul 26, 2016
suite Revert "Unit Tests Run On One Thread" Aug 20, 2018
themes Add theme example files Jun 26, 2018
.editorconfig markdown requires spaces instead of tabs, force it with a .editorconf… Jul 24, 2016
.gitignore Fix format of strings in python/log.py Jul 16, 2018
.gitmodules Initial python API tests (#1054) Jun 7, 2018
CMakeLists.txt A LLIL C++ API Parser example with in depth build notes (#721) Jul 16, 2017
LICENSE.txt update copyright year May 19, 2017
Makefile Fix format of strings in python/log.py Jul 16, 2018
Makefile.win build explanation, windows make files Mar 15, 2017
README.md update to latest slack badge Mar 23, 2018
architecture.cpp Prevent creation of LowLevelILFunction wrappers on the stack Apr 30, 2018
backgroundtask.cpp Container Memory Reservations. Mar 23, 2018
basicblock.cpp Various Python 3 support changes Jul 10, 2018
binaryninjaapi.cpp Add DownloadProvider Support. Jun 20, 2018
binaryninjaapi.h api: add methods to get basic block objects from IL instrs Aug 20, 2018
binaryninjacore.h api: add methods to get basic block objects from IL instrs Aug 20, 2018
binaryreader.cpp Adding settings system apis, and binaryview metadata apis Jul 1, 2017
binaryview.cpp Expose the ability to suppress analysis of auto-discovered functions Jul 28, 2018
binaryviewtype.cpp Fix lifting of intrinsics in Python bindings Jun 28, 2018
binarywriter.cpp update copyright year May 19, 2017
callingconvention.cpp Fix reference leak in calling conventions Mar 23, 2018
databuffer.cpp update copyright year May 19, 2017
demangle.cpp fix indentation May 19, 2017
downloadprovider.cpp Finish DownloadProvider C++ API. Aug 10, 2018
doxyconfig Adding initial documentation for c++ Jun 29, 2016
fileaccessor.cpp update copyright year May 19, 2017
filemetadata.cpp update copyright year May 19, 2017
function.cpp Add new API to query active analysis info and set analysis limits. Jun 27, 2018
functiongraph.cpp Add plugin commands for LLIL and MLIL Apr 3, 2018
functiongraphblock.cpp Add plugin commands for LLIL and MLIL Apr 3, 2018
functionrecognizer.cpp Add MediumLevelIL Function Recognizer. Dec 4, 2017
interaction.cpp Removed unneeded shadowed variabled Nov 12, 2017
log.cpp Log cleanup. Mar 23, 2018
lowlevelil.cpp api: add methods to get basic block objects from IL instrs Aug 20, 2018
lowlevelilinstruction.cpp Adding tailcall analysis to the core. Apr 25, 2018
lowlevelilinstruction.h Adding tailcall analysis to the core. Apr 25, 2018
mainthread.cpp Add API to execute code on the main thread Aug 18, 2016
mediumlevelil.cpp api: add methods to get basic block objects from IL instrs Aug 20, 2018
mediumlevelilinstruction.cpp Adding tailcall analysis to the core. Apr 25, 2018
mediumlevelilinstruction.h Adding tailcall analysis to the core. Apr 25, 2018
metadata.cpp Container Memory Reservations. Mar 23, 2018
mkdocs.yml initial plugin using writing documentation Jul 4, 2017
platform.cpp Container Memory Reservations. Mar 23, 2018
plugin.cpp Add plugin commands for LLIL and MLIL Apr 3, 2018
pluginmanager.cpp Cleanup of some of the plugin manager APIs Mar 28, 2017
scriptingprovider.cpp Expose ScriptingProvider name in C++ bindings Aug 15, 2018
settings.cpp Container Memory Reservations. Mar 23, 2018
tempfile.cpp update copyright year May 19, 2017
transform.cpp Container Memory Reservations. Mar 23, 2018
type.cpp Prevent creation of invalid Type wrappers Mar 28, 2018
update.cpp Container Memory Reservations. Mar 23, 2018

README.md

slack

Binary Ninja API

This repository contains documentation and source code for the Binary Ninja reverse engineering platform API.

Branches

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.

Contributing

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 interested in contributing, first please read and sign the Contribution License Agreement. Next, email your signed copy of the license to info@binary.ninja along with your github username. Once that email is confirmed, any pending pull requests will be evaluated for inclusion.

Issues

The issue tracker for this repository tracks not only issues with the source code contained here but also the broader Binary Ninja product.

Building

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.

Examples

  • 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