Skip to content

ctfhacker/binja-rs

Repository files navigation

Binary Ninja Rust Bindings

Work in progress Rust bindings geared towards analysis. Features added as they come up. No promises anything works at this point ;-)

Examples

  • back_slice: Example implementation of a back slicing algorithm over SSA
  • bininfo: Dump basic binary information for a given binary
  • count_ins: Counts the number of LLIL, MLIL, HLIL calls for a given binary
  • cyclomatic_complexity: Dumps a sample of most connected functions and basic blocks for a given binary
  • llil_parser: Dumps LLIL instructions
  • mlil_parser: Dumps MLIL instructions
  • hlil_parser: Dumps HLIL instructions

Building bindings

The first time the bindings are cloned, they don't exist. Need to pull in the API and build them by running the following:

cd binja-sys
git clone -b dev https://github.com/vector35/binaryninja-api
cargo build --release

Debugging

If this error is shown:

Linux

error while loading shared libraries: libbinaryninjacore.so.1: cannot open shared object file: No such file or directory

Add the binaryninjacore path to LD_LIBRARY_PATH:

export LD_LIBRARY_PATH=$HOME/binaryninja

Windows

Ensure the path to binaryninjacore.dll is in your PATH.

Docs

Documentation can be generated by running the following

cargo docs --open

Issues

Sometimes there is an error when creating from the BinaryViewType. Not exactly sure why this happens, but running the binary again usually fixes it.

C:\Users\rando\workspace\binja-rs\examples\back_slice>target\release\back_slice.exe timeout.exe
Using plugin dir: C:\Program Files\Vector35\BinaryNinja\plugins
BNInitCorePlugins: true
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: BNCreateBinaryViewOfType(self.handle, data.handle()) failed', src\main.rs:24:54
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

About

Some Rust bindings for Binary Ninja

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages