Table of Contents
This fuzzing suite combines LLVM coverage instrumentation with random input generation to effectively test C/C++ programs. By leveraging Rust's safety guarantees and performance, it provides robust fuzzing capabilities with detailed coverage analysis. The suite automatically tracks execution paths, identifies crashes, and generates comprehensive reports, making it a valuable tool for finding potential vulnerabilities and bugs in C/C++ code.
- Random input generation with configurable parameters
- LLVM-based coverage tracking
- Coverage visualization with plotters
- LCOV report generation
- Crash detection and reproduction
- Support for ASan (Address Sanitizer)
The following instructions are for Arch Linux, if you are using a different platform, please adjust accordingly.
- Install Rust Toolchain
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs
- Instal git, LLVM tools, Clang
sudo pacman -S git llvm clang
git clone
cd fuzz_suite
cargo build
Place your C/C++ program in the examples directory:
examples/
your_program/
src/
main.c
Run the fuzzer:
cargo run
The fuzzer will:
- Compile your program with coverage instrumentation
- Generate and test random inputs
- Track code coverage
- Detect and save crashes
- Generate coverage reports and visualizations
examples/your_program/
├── bin/ # Compiled binaries
├── coverage/ # Coverage data and reports
│ ├── coverage.lcov
│ └── coverage_over_time.png
├── crashes/ # Crash-inducing inputs
└── src/ # Source files
- Lexical Fuzzing
- Basic Fuzzing
- Track Code Coverage
- Mutation-Based Fuzzing
- Greybox Fuzzing
- Search-Based Fuzzing
- Mutation Analysis
- Syntactic Fuzzing
- Grammar Fuzzing
- Efficient Grammar Fuzzing
- Systematic Grammar Coverage
- Parsing Inputs
- Probabilistic Grammar Fuzzing
- Fuzzing with Generators
- Greybox Grammar Fuzzing
- Reduce Failure-Inducing Inputs
- Semantic Fuzzing
- Fuzzing with Constraints
- Grammar Mining
- Tracking Information Flow
- Concolic Fuzzing
- Symbolic Fuzzing
- Mining Function Specifications
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Your Name - @nicholicaron - nicholicaron@gmail.com
Project Link: https://github.com/nicholicaron/FuzzTheWorld