Introduction
sol-azy is a modular, CLI-based toolchain designed for working with Solana programs.
It combines static analysis, reverse engineering, and project building features in one streamlined developer and auditor experience.
What Is sol-azy?
sol-azy provides tools for:
-
Building Solana programs:
- Supports both
Anchor
and nativeSBF
workflows - Handles compilation and artifact organization
- Supports both
-
Static Application Security Testing (SAST):
- Uses a custom Starlark-based rule engine
- Applies pattern-matching on the Rust AST
- Enables writing domain-specific security rules
-
Reverse Engineering:
- Disassembles compiled sBPF bytecode
- Exports Control Flow Graphs in
.dot
format - Tracks and formats immediate data from RODATA
- Annotations simplified with Rust-like pseudocode
-
Dotting:
- Lets you manually reinsert functions into reduced CFGs from the full
.dot
graph - Useful for selectively exploring large or complex programs
- Lets you manually reinsert functions into reduced CFGs from the full
-
Fetcher:
- Retrieves deployed
.so
binaries from Solana RPC endpoints using a program ID - Makes it easy to reverse-engineer or audit programs without local builds
- Retrieves deployed
Why sol-azy?
While tools like solana
, cargo build-sbf
, or anchor build
focus on building and deployment, sol-azy targets:
- Security auditing workflows
- Automated code review pipelines
- Understanding bytecode-level structure
- Writing and applying custom static rules
It integrates tightly with Solana's BPF toolchain and syn
parsing to provide source-level and binary-level insights in one place.
Project Structure
sol-azy is structured into several engines and CLI commands:
build
– Compile programs and prepare artifactssast
– Run static analysis with Starlark rulesreverse
– Perform bytecode reverse engineeringdotting
– Post-process.dot
graphs to manually restore functions in reduced CFGsfetcher
– Retrieve deployed on-chain bytecode for offline inspection
See the full CLI Usage section for more details.
Requirements
- Rust + Cargo
- Solana Toolchain (for
cargo build-sbf
) - (Optional)
anchor
for Anchor support - [
mdbook
] if you are contributing to or browsing the documentation locally