Skip to content

Latest commit

 

History

History
64 lines (39 loc) · 1.87 KB

README.md

File metadata and controls

64 lines (39 loc) · 1.87 KB

bn-ebpf-solana

A pure-python Binary Ninja plugin for Solana EBPF.

Installation

Available in Binja's plugin manager inside of Plugins > Manage Plugins

Manual installation (advanced)

This is only needed if you wish to tinker with the plugin to modify it.

Clone this repo in your Binja plugins folder, located in the user folder.

Now install the requirements :

  • either by running Install python3 module in Binja's command palette (Ctrl + P) and install lief
  • or by going to the user folder and installing lief within the venv enviroment using:
pip install lief

Currently tested on [email protected]

See our introductory blog post.

Instruction lifting!

Solana SDK Structures!

Copy this directory into your Binary Ninja plugins folder and restart.

Features

  • Instruction Lifting: All EBPF instructions are lifted to LLIL
  • Accurate Memory Maps: We implement Solana-specific memory maps (0x{1/2/3/4}00000000 addresses for data/stack/heap/input)
  • Solana ELF Relocations: Solana-specific ELF relocations
  • Syscall Function Signatures: Full signatures for all of the Solana syscalls
  • (partial) Solana SDK Types: Type definitions for all Solana SDK objects. (fully complete for C, in-progress for Rust)

TODO:

  • Solana SDK Signature Matching: Automatically match common Solana SDK functions.

Debugging

[ScriptingProvider] ModuleNotFoundError: No module named 'lief'

Is lief installed?

Run the following in the Binja python console

import lief
lief.__version__

If you get an error, refer to the Installation section