aflpp
AFL++ is a fork of AFL with better fuzzing performance and advanced features. Use for multi-core fuzzing of C/C++ projects.
npx skills add trailofbits/skills --skill aflpp --agent claude-code
Same command for any agent — swap --agent for codex, cursor, copilot.
Weekly change comes from our own snapshots, not the repository page — it measures attention, not adoption.
What it does
AFL++ (aflpp) is a fuzzer type tool intended for multi-core fuzzing of C/C++ projects, providing features for high-throughput fuzzing across multiple cores and mature tooling for large campaigns. It emphasizes multi-core fuzzing, diverse mutations, and support for harnesses compatible with libFuzzer-style interfaces.
How it works
The skill instructs to use AFL++ for multi-core fuzzing campaigns and provides guidance across:
- Quick Start: harness setup and compilation/run commands showing usage of AFL++ with docker or host modes, including a minimal harness and a basic fuzz run.
- Installation: methods to install AFL++ via Ubuntu/Debian repos, Docker, or from source, including wrapping scripts and system configurations.
- Writing a Harness: demonstrates a libFuzzer-style harness structure and guidelines for harness rules to maintain determinism and proper resource handling.
- Compilation: guidance on choosing a compilation mode (LTO, LLVM, GCC plugin) and example commands for building with fuzzing enabled and sanitizers.
- Corpus Management and Running Campaigns: commands for creating initial corpus, minimizing it, and running campaigns with afl-fuzz, including environment variable notes for tuning parallel fuzzing.
- Multi-Core Fuzzing and Monitoring: instructions to start primary and secondary fuzzers, monitor with watch, and stop all fuzzers.
- Coverage and CMPLOG: discusses coverage tracking via fuzzer_stats/plot_data and enabling CMPLOG via environment variable.
- Sanitizer Integration: shows how to enable AddressSanitizer and UBSan in fuzz builds, with cautions about memory limits.
- Advanced Usage: tips like using LLVMFuzzerTestOneInput harnesses, using dictionaries, and timeouts; includes file and standard input fuzzing approaches and argument fuzzing examples.
Commands, file names, and tool names are quoted exactly as presented in the material, including shell scripts and AFL++ option flags where shown.
# AFL++ AFL++ is a fork of the original AFL fuzzer that offers better fuzzing performance and more advanced features while maintaining stability. A major benefit over libFuzzer is that AFL++ has stable support for running fuzzing campaigns on multiple cores, making it ideal for large-scale fuzzing efforts. ## When to Use | Fuzzer | Best For | Complexity | |--------|----------|------------| | AFL++ | Multi-core fuzzing, diverse mutations, mature projects | Medium | | libFuzzer | Quick setup, single-threaded, simple harnesses | Low | | LibAFL | Custom fuzzers, research, advanced use cases | High | **Choose AFL++ when:** - You need multi-core fuzzing to maximize throughput - Your project can be compiled with Clang or GCC - You want diverse mutation strategies and mature tooling - libFuzzer has plateaued and you need more coverage - You're fuzzing production codebases that benefit from parallel execution ## Quick Start ```c++ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { // Call your code with fuzzer-provided data check_buf((char*)data, size); return 0; } ``` Compile and run: ```bash # Setup AFL++ wrapper script first (see Installation) ./afl++ docker afl-cl
- When to Use
- Quick Start
- Installation
- Ubuntu/Debian
- Docker (from Docker Hub)
- Docker (from source)
- From source
- Wrapper Script Setup
- System Configuration
- Writing a Harness
- Harness Structure
- Harness Rules
- Compilation
- Compilation Mode Decision Tree
What does the aflpp skill do?
AFL++ is a fork of AFL with better fuzzing performance and advanced features. Use for multi-core fuzzing of C/C++ projects.
How do I install it?
Run `npx skills add trailofbits/skills --skill aflpp --agent claude-code` — it drops the skill into your project so the agent can pick it up. Swap the --agent value for codex, cursor or copilot if you use one of those.
Where does this skill come from?
From trailofbits/skills, a repository with 6,426 stars. We read it straight from the repository tree rather than a submitted listing, so what you see here is what is actually published.
Is a popular skill a good skill?
Not necessarily. Stars measure attention, not adoption — a repository can trend for a week and be abandoned. That is why we show the weekly change from our own snapshots next to the total, instead of a single flattering number.
