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
Anchorand nativeSBFworkflows - Handles compilation and artifact organization
- Supports both
-
Recap:
- Produces a compact, audit-friendly summary per program/IDL
- Extracts instruction-level metadata (Signers, Writable, Constrained, Seeded, Memory)
- Maps IDLs to Anchor crates and performs lightweight source parsing to surface constraints, seeds and memory usage
- Ideal as a quick starting report for security reviews and audits
-
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
.dotformat - 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
.dotgraph - Useful for selectively exploring large or complex programs
- Lets you manually reinsert functions into reduced CFGs from the full
-
Fetcher:
- Retrieves deployed
.sobinaries 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 artifactsrecap– Generate quick IDL+source summaries for audits (instruction tables, constraints, seeds, memory flags)sast– Run static analysis with Starlark rulesreverse– Perform bytecode reverse engineeringdotting– Post-process.dotgraphs 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)
anchorfor Anchor support - [
mdbook] if you are contributing to or browsing the documentation locally