Public API, examples, documentation and issues for Binary Ninja
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
api-docs only include specific version in one file to minimize update churn Nov 27, 2018
docs add t hotkey Dec 4, 2018
examples Merging with dev Aug 31, 2018
json Initial Enhanced Settings System. Oct 18, 2018
python convert core_serial, version, build_id ando thers to methods Nov 27, 2018
scripts linux setup supports both python 2 and 3 side-by-side now Dec 4, 2018
sphinx_rtd_theme only include specific version in one file to minimize update churn Nov 27, 2018
suite Add expression parsing APIs Nov 13, 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 api: switch testcase submodule url to https:// Sep 17, 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 CLA info Oct 8, 2018
architecture.cpp Merge branch 'dev' into test_relocation May 7, 2018
backgroundtask.cpp Container Memory Reservations. Mar 23, 2018
basicblock.cpp Provide fall-through indication in BasicBlockEdge info. Nov 5, 2018
binaryninjaapi.cpp Add DownloadProvider Support. Jun 20, 2018
binaryninjaapi.h Fix warning, expose PluginType api Nov 28, 2018
binaryninjacore.h Add Disassembly Option Dec 5, 2018
binaryreader.cpp Adding settings system apis, and binaryview metadata apis Jul 1, 2017
binaryview.cpp Add Find APIs with progress Nov 18, 2018
binaryviewtype.cpp Fix lifting of intrinsics in Python bindings Jun 28, 2018
binarywriter.cpp update copyright year May 19, 2017
callingconvention.cpp Merge branch 'dev' into test_relocation Sep 20, 2018
databuffer.cpp Added move constructor/assignment operator to DataBuffer Oct 19, 2018
datarenderer.cpp Expose DataRender APIs, allow setting const on types, and allow type … Oct 19, 2018
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 Initial Enhanced Settings System. Oct 18, 2018
flowgraph.cpp Modify flow graph API to support multiple layout requests for a singl… Aug 14, 2018
flowgraphnode.cpp Modify flow graph API to support multiple layout requests for a singl… Aug 14, 2018
function.cpp Merging with dev Sep 12, 2018
functionrecognizer.cpp Add MediumLevelIL Function Recognizer. Dec 4, 2017
interaction.cpp Fix warning, expose PluginType api Nov 28, 2018
log.cpp Log cleanup. Mar 23, 2018
lowlevelil.cpp Add API to create graphs of IL functions Sep 5, 2018
lowlevelilinstruction.cpp Merging with dev Sep 12, 2018
lowlevelilinstruction.h Merging with dev Sep 12, 2018
mainthread.cpp Add API to execute code on the main thread Aug 18, 2016
mediumlevelil.cpp Add API to create graphs of IL functions Sep 5, 2018
mediumlevelilinstruction.cpp Fixed MediumLevelILInstructionBase::GetNonSSAForm Oct 22, 2018
mediumlevelilinstruction.h Merging with dev Sep 12, 2018
metadata.cpp Fix memory leak in namespaces Oct 19, 2018
mkdocs.yml fix styles for mobile layouts Aug 28, 2018
platform.cpp Fix minor memory leak in ParseTypesFromSource Oct 6, 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
relocationhandler.cpp Set default GetOperandForExternalRelocation to BN_AUTOCOERCE_EXTERN_PTR Oct 28, 2018
scriptingprovider.cpp Expose ScriptingProvider name in C++ bindings Aug 15, 2018
settings.cpp Add ability to serialize/deserialize settings from BinaryViews. Nov 21, 2018
tempfile.cpp update copyright year May 19, 2017
transform.cpp Container Memory Reservations. Mar 23, 2018
type.cpp Expose DataRender APIs, allow setting const on types, and allow type … Oct 19, 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 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.

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