| assets | ||
| crates | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| proton.asm | ||
| proton.so | ||
| README.md | ||
Solens: Solana sBPF Disassembler & Hex Viewer
A lightweight, terminal-native tool designed for reversing Solana smart contracts. Built in Rust with a focus on speed, simplicity, and accessibility for security researchers.
🎯 The Why
My primary intention was to learn the Solana protocol security by reverse-engineering sBPF binaries. While the ecosystem has some powerful tools, I found significant friction in the existing landscape:
- Binary Ninja: While OtterSec has a great plugin, it is primarily effective for the paid version, which can be a barrier for independent researchers or those just starting.
- Ghidra: There is an eBPF plugin available (and since sBPF and eBPF opcodes don't vary much, it is quite useful), but the plugin installation process didn't feel straightforward or developer-friendly to me.
Solens is my solution: a standalone, open-source tool built to lower the barrier to entry. I decided to build this tool while diving deeper into Web3 security, and I hope this small program will be useful for other security researchers in the Solana ecosystem.
🚀 Features
- Native sBPF Support: Built specifically for the Solana-variant of eBPF.
- Dual-Pane UI: Synchronized Hexadecimal and Assembly views for precise binary analysis.
- Zero Bloat: No Java dependencies or expensive licenses required.
- Rust-Powered: High performance and memory safety, essential for binary analysis.
🛠 Project Structure
This project uses a Cargo Workspace to maintain a clean separation of concerns:
crates/ui: The Ratatui terminal interface layer.crates/solens: The core sBPF disassembly engine.
📥 Getting Started
Prerequisites
Ensure you have the Rust toolchain installed.
Installation
# Clone the repository
git clone git@github.com:hnariman/solens.git
# Navigate to the root
cd solens
# Build and run the UI
cargo run -p ui
