Skip to main content

Decompilers, Emulators and More​

Smart Contracts are typically written in some high-level language such as Solidity, Rust and then compiled into byte code to be uploaded on the blockchain. Sometimes as a reverse engineer, you might not have the luxury of access to source code.

This is where the disassemblers, decompilers, emulators and debuggers come into play. There are some awesome tools and articles made by the community.


Sergio Anguita of Certik's blog:


Richard Patel added Capstone disassembler for BPF.

Richard Patel Binary Ninja plugin for eBPF


14 places to learn about Solana Bytecode Format by Richard Patel

References:

Implementations:

Binary Analysis:


Reverse Engineering Solana with Binary Ninja:


Porting the Solana eBPF JIT compiler to ARM64 by Trail of Bits


Symbolic execution of eBPF with radius2 by alkali


Addison Crump's blog on Earn $200K by fuzzing for a weekend


TheZero's blog on A Sneak Peek into Smart Contracts Reversing and Emulation


Will Schwab's about their experiences reverse engineering smart contract articles from bytecode and calldata: