Skip to content
Public API, examples, documentation and issues for Binary Ninja
Python C++ C Makefile Batchfile Shell
Branch: dev
Clone or download

Latest commit

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
api-docs update docs to exclude inspect module May 21, 2020
docs correct list of settings in getting starte docs, removing plugins and… May 21, 2020
examples Add intermediate analysis mode. Apr 25, 2020
json Modifications for supporting jemalloc in the core May 11, 2020
python small clarification on get_view_of_file docs May 28, 2020
rapidjson Using rapidjson for database deserialization for quicker database loads Sep 20, 2019
scripts Improved installation process for venv Apr 15, 2020
sphinx_rtd_theme @ 81caf29 moving rtd modifications to a submodule, moving to py3 for docs May 11, 2019
suite update unit tests May 27, 2020
themes small tweak to high contrast theme for better linear view Apr 15, 2020
ui Xref list perf improvements May 16, 2020
.editorconfig markdown requires spaces instead of tabs, force it with a .editorconf… Jul 24, 2016
.gitignore Update .gitignore Nov 25, 2019
.gitmodules git: ensure consistency of submodule urls May 31, 2019
CMakeLists.txt Greatly improved CMake builds + Fixed tests compilation Feb 27, 2019
LICENSE.txt update copyright year to 2020 Jan 1, 2020
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
SECURITY.md Create SECURITY.md May 6, 2020
architecture.cpp Add system register list to architectures. Apr 28, 2020
backgroundtask.cpp Container Memory Reservations. Mar 23, 2018
basicblock.cpp Factor gutter width/tag token width into a setting Jan 16, 2020
binaryninjaapi.cpp update copyright year to 2020 Jan 1, 2020
binaryninjaapi.h Add optional type to define as in Function::ApplyImportedTypes and Bi… May 28, 2020
binaryninjacore.h Add optional type to define as in Function::ApplyImportedTypes and Bi… May 28, 2020
binaryreader.cpp update copyright year to 2020 Jan 1, 2020
binaryview.cpp Add optional type to define as in Function::ApplyImportedTypes and Bi… May 28, 2020
binaryviewtype.cpp Add parse-only BinaryView creation to the API. Feb 16, 2020
binarywriter.cpp update copyright year to 2020 Jan 1, 2020
callingconvention.cpp update copyright year to 2020 Jan 1, 2020
databuffer.cpp update copyright year to 2020 Jan 1, 2020
datarenderer.cpp Fix for issue with custom display types Dec 13, 2019
demangle.cpp fix indentation May 19, 2017
downloadprovider.cpp Fix some double free bugs in API May 10, 2019
doxyconfig Adding initial documentation for c++ Jun 29, 2016
fileaccessor.cpp update copyright year to 2020 Jan 1, 2020
filemetadata.cpp Undobuffer merging and mergetool Mar 31, 2020
flowgraph.cpp Early HLIL testing Apr 17, 2020
flowgraphnode.cpp update copyright year to 2020 Jan 1, 2020
function.cpp Add optional type to define as in Function::ApplyImportedTypes and Bi… May 28, 2020
functionrecognizer.cpp update copyright year to 2020 Jan 1, 2020
highlevelil.cpp Add names for goto labels Apr 28, 2020
highlevelilinstruction.cpp Modifications for supporting jemalloc in the core May 11, 2020
highlevelilinstruction.h Modifications for supporting jemalloc in the core May 11, 2020
interaction.cpp Fix warning, expose PluginType api Nov 28, 2018
linearviewcursor.cpp Initial implementation of new linear view API Apr 17, 2020
linearviewobject.cpp Adding SSA support for HLIL Apr 17, 2020
log.cpp update copyright year to 2020 Jan 1, 2020
lowlevelil.cpp update copyright year to 2020 Jan 1, 2020
lowlevelilinstruction.cpp Modifications for supporting jemalloc in the core May 11, 2020
lowlevelilinstruction.h Modifications for supporting jemalloc in the core May 11, 2020
mainthread.cpp Add an is_main_thread API Mar 20, 2019
mediumlevelil.cpp update copyright year to 2020 Jan 1, 2020
mediumlevelilinstruction.cpp Modifications for supporting jemalloc in the core May 11, 2020
mediumlevelilinstruction.h Modifications for supporting jemalloc in the core May 11, 2020
metadata.cpp Fix memory leak in namespaces Oct 19, 2018
mkdocs.yml fix syntax highlighting and add css files for offline highlighting to… May 19, 2020
platform.cpp update copyright year to 2020 Jan 1, 2020
plugin.cpp update copyright year to 2020 Jan 1, 2020
pluginmanager.cpp fixing minimim typo throughout api Mar 20, 2020
rapidjsonwrapper.h Eliminate most warnings on Linux Oct 28, 2019
relocationhandler.cpp update copyright year to 2020 Jan 1, 2020
scriptingprovider.cpp Input completion through python Jul 29, 2019
settings.cpp Access Settings Values as Json. Sep 22, 2019
tempfile.cpp update copyright year to 2020 Jan 1, 2020
transform.cpp update copyright year to 2020 Jan 1, 2020
type.cpp Add registered name to type objects Feb 4, 2020
undoaction.cpp Undobuffer merging and mergetool Mar 31, 2020
update.cpp update copyright year to 2020 Jan 1, 2020
user.cpp Undobuffer merging and mergetool Mar 31, 2020

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
You can’t perform that action at this time.