Skip to content

Latest commit

 

History

History
116 lines (89 loc) · 4.08 KB

File metadata and controls

116 lines (89 loc) · 4.08 KB

Solana Program Analysis

A toolkit for downloading, disassembling, and analyzing Solana programs. Designed to be extensible for adding multiple programs.

Repository Structure

.
├── programs/                    # Analyzed programs
│   └── <program-name>/
│       ├── README.md           # Program-specific documentation
│       ├── program.so          # Downloaded BPF binary
│       ├── idl.json            # Anchor IDL (if available)
│       └── disassembly/
│           └── program.asm     # Disassembled bytecode
├── scripts/                     # Automation scripts
│   ├── analyze.sh              # Full analysis pipeline
│   ├── download.sh             # Download program binary
│   ├── disassemble.sh          # Disassemble BPF bytecode
│   └── fetch_idl.sh            # Fetch Anchor IDL
├── docs/                        # Documentation
│   └── analysis-guide.md       # How to analyze programs
└── config/
    └── programs.json           # Registry of programs

Quick Start

Prerequisites

# macOS
brew install solana llvm

# Install Anchor (optional)
cargo install --git https://github.com/coral-xyz/anchor anchor-cli

Analyze a New Program

# Using the full pipeline
./scripts/analyze.sh <program-id> <program-name>

# Example: Analyze Jupiter Aggregator
./scripts/analyze.sh JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 jupiter

Manual Steps

# 1. Download program binary
./scripts/download.sh <program-id> <program-name>

# 2. Fetch IDL (if Anchor program)
./scripts/fetch_idl.sh <program-id> <program-name>

# 3. Disassemble
./scripts/disassemble.sh <program-name>

Analyzed Programs

Program Address Type Status
DFlow Swap Orchestrator DF1ow4tspfHX9JwWJsAb9epbkA8hmpSEAtxXy1V27QBH DEX Aggregator (Anchor) Complete
DFlow Outcome Token Engine pReDicTmksnPfkfiz33ndSdbe2dY43KYPg4U2dbvHvb Prediction Market Engine (Native) Complete
Jupiter Prediction Market 3ZZuTbwC6aJbvteyVxXUS7gtFYdf7AuXeitx6VyvjvUp Prediction Market (Anchor) Complete
Jupiter v6 Aggregator JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 DEX Aggregator (Hybrid) Complete
Squads Smart Account SMRTzfY6DfH5ik3TKiyLFfXexV8uSG3d2UksSCYdunG Multisig Smart Account (Anchor) Complete

Adding a New Program

  1. Add the program to config/programs.json:

    {
      "name": "my-program",
      "address": "PROGRAM_ADDRESS_HERE",
      "cluster": "mainnet-beta",
      "type": "anchor"
    }
  2. Run the analysis:

    ./scripts/analyze.sh PROGRAM_ADDRESS my-program
  3. Create documentation in programs/my-program/README.md

Documentation

Tools Used

Tool Purpose
solana program dump Download program binary from chain
anchor idl fetch Fetch Anchor IDL from chain
llvm-objdump Disassemble eBPF bytecode
strings Extract readable strings from binary
jq Parse and format JSON

License

MIT