Skip to main content

Overview

RAPTOR integrates AFL++ for intelligent binary fuzzing with automatic crash collection, ranking by exploitability, and autonomous crash analysis powered by LLMs.

Architecture

AFL++ Runner

Basic Fuzzing Campaign

Launch a fuzzing campaign:

Input Modes

Stdin mode (default):
File mode (uses @@ placeholder):

Instrumentation Detection

AFL++ works best with instrumented binaries:

Recompilation Guide

For optimal results, recompile with AFL instrumentation:

Sanitizer Detection

Check if binary has sanitizers enabled:

Parallel Fuzzing

Worker Configuration

AFL++ supports parallel fuzzing with multiple instances:

Main + Secondary Architecture

RAPTOR automatically configures the AFL hierarchy:

Performance Monitoring

AFL++ statistics are logged during fuzzing:

Crash Collection

Automatic Collection

Crashes are automatically collected and deduplicated:

Crash Data Structure

Exploitability Ranking

Crashes are ranked by likely exploitability:

Signal Names

Corpus Management

Default Corpus

If no corpus provided, RAPTOR creates basic seeds:

Custom Corpus

Provide domain-specific seeds:

AFL Dictionary

Provide syntax hints for structured inputs:

CLI Usage

Basic Fuzzing

Parallel Fuzzing

With Custom Corpus

With Dictionary

File Input Mode

Check Instrumentation

Coverage Analysis

Crash Analysis

Autonomous Analysis Pipeline

RAPTOR automatically analyzes crashes with GDB + LLM:

Crash Context

GDB extracts detailed crash information:

Crash Type Classification

Heuristic classification:

Autonomous Mode

Intelligent Fuzzing

Enable autonomous decision-making:

Memory & Learning

Autonomous mode persists knowledge:

Goal-Directed Fuzzing

Set high-level objectives:
The goal planner:
  1. Generates intelligent seeds targeting goal areas
  2. Prioritizes crashes matching goal patterns
  3. Adjusts fuzzing strategy based on progress

Corpus Generation

Autonomous corpus generation:

Workflow Output

Crash Deduplication

Multiple deduplication strategies:
  1. Input hash: Same input file → duplicate
  2. Stack hash: Same stack trace → duplicate
  3. Signal: Different signals → unique

Best Practices

Use parallel fuzzing: 4-8 parallel instances provide near-linear speedup. Start with --parallel 4.
AFL shared memory: On macOS, AFL requires shared memory configuration. Run sudo afl-system-config before fuzzing.
Recompile with instrumentation: Non-instrumented binaries use QEMU mode which is 2-5x slower. Recompile with afl-clang for best results.

Troubleshooting

AFL Shared Memory Error

On macOS:

No Crashes Found

If fuzzing finds no crashes:
  1. Increase duration: --duration 7200 (2 hours)
  2. Improve corpus: Add valid inputs as seeds
  3. Check timeout: Increase --timeout 5000 (5 seconds)
  4. Verify binary works: echo "test" | ./binary

Low Execution Speed

If execs/sec is low:
  • Reduce timeout: --timeout 100 (100ms)
  • Use instrumented binary (not QEMU mode)
  • Simplify binary (disable unnecessary checks)
  • Check for blocking I/O

See Also