Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
LibAFL — Advanced Fuzzing Library - Slot your Fuzzer together in Rust! Scales across cores and machines. For Windows, Android, MacOS, Linux, no_std, ... | Kitploit
Tools/GitHubGitHub/aflplusplus/libafl
Penetration Testing FrameworksDynamic Analysis (Sandboxing)Exploit FrameworksVulnerability AnalysisFuzzingBinary AnalysisPapers & ResearchLearning & EducationTop in Fuzzing #10
2.6k478147 days agoReviewed by Kitploit
GitHub
aflplusplus/libafl

LibAFL

Advanced Fuzzing Library - Slot your Fuzzer together in Rust! Scales across cores and machines. For Windows, Android, MacOS, Linux, no_std, ...

View Repository

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

LibAFL, the fuzzer library

LibAFL logo

Advanced Fuzzing Library - Slot your own fuzzers together and extend their features using Rust.

LibAFL is a collection of reusable pieces of fuzzers, written in Rust, it gives you many of the benefits of an off-the-shelf fuzzer, while being completely customizable. Some highlight features currently include:

  • fast: We do everything we can at compile time, keeping runtime overhead minimal. Users reach 120k execs/sec in frida-mode on a phone (using all cores).
  • scalable: Low Level Message Passing, LLMP for short, allows LibAFL to scale almost linearly over cores, and via TCP to multiple machines.
  • adaptable: You can replace each part of . For example, is just one potential form input: feel free to add an AST-based input for structured fuzzing, and more.
LibAFL
BytesInput
  • multi platform: LibAFL runs on Windows, macOS, iOS, Linux, and Android, and more. LibAFL can be built in no_std mode to inject LibAFL into obscure targets like embedded devices and hypervisors.
  • bring your own target: We support binary-only modes, like Frida-Mode, as well as multiple compilation passes for sourced-based instrumentation. Of course it's easy to add custom instrumentation backends.
  • Core concepts

    LibAFL is fast, multi-platform, no_std compatible, and scales over cores and machines. It offers a main crate that provide building blocks for custom fuzzers, libafl, a library containing common code that can be used for targets instrumentation, libafl_targets, and a library providing facilities to wrap compilers, libafl_cc. It offers integrations with popular instrumentation frameworks. At the moment, the supported backends are:

    • SanitizerCoverage, in libafl_targets
    • Frida, in libafl_frida
    • QEMU user-mode and system mode, including hooks for emulation, in libafl_qemu
    • TinyInst, in libafl_tinyinst by elbiazo

    Building and installing

    Install the Dependencies

    • The Rust development language
      • We highly recommend not to use e.g. your Linux distribution package as this is likely outdated. So rather install Rust directly, instructions can be found here.

      • The minimum supported Rust version is defined. You can always check the currently required version in LibAFL’s Cargo.toml:

        If your installed Rust version is older than the one listed in Cargo.toml, update to the latest stable toolchain:

        root@kitploit:~
        rustup update stable
        
    • LLVM tools
      • The LLVM tools (including clang, clang++) are needed (newer than LLVM 15.0.0 up to LLVM 18.1.3) If you are using Debian/Ubuntu, again, we highly recommmend that you install the package from here
    • Just:
      • We use just to build the fuzzers in fuzzers/ directory. You can find instructions to install it in your environment in the Just Programmer's Manual.

    Clone the LibAFL repository with

    root@kitploit:~
    git clone https://github.com/AFLplusplus/LibAFL
    

    Build the library using

    root@kitploit:~
    cargo build --release
    

    Build the API documentation with

    root@kitploit:~
    cargo doc
    

    Browse the LibAFL book (WIP!) with (requires mdbook)

    root@kitploit:~
    cd docs && mdbook serve
    

    Getting started

    We collect all example fuzzers in ./fuzzers. Be sure to read their documentation (and source), this is the natural way to get started!

    root@kitploit:~
    just run
    

    You can run each example fuzzer with this following command, as long as the fuzzer directory has a Justfile file. The best-tested fuzzer is ./fuzzers/inprocess/libfuzzer_libpng, a multicore libfuzzer-like fuzzer using LibAFL for a libpng harness.

    Resources

    • Installation guide
    • Online API documentation
    • The LibAFL book (WIP) online or in the repo
    • Our research paper
    • Our RC3 talk explaining the core concepts
    • Our Fuzzcon Europe talk with a (a bit but not so much outdated) step-by-step discussion on how to build some example fuzzers
    • The Fuzzing101 solutions & series of blog posts by epi
    • Blogpost on binary-only fuzzing lib libaf_qemu, Hacking TMNF - Fuzzing the game server, by RickdeJager.
    • A LibAFL Introductory Workshop, by Jordan Whitehead

    Contributors

    LibAFL is written and maintained by

    • Andrea Fioraldi [email protected]
    • Dominik Maier [email protected]
    • s1341 [email protected]
    • Dongjia Zhang [email protected]
    • Addison Crump [email protected]
    • Romain Malmain [email protected]

    Contributing

    Please check out CONTRIBUTING.md for the contributing guideline.

    Debugging

    Your fuzzer doesn't work as expected? Try reading DEBUGGING.md to understand how to debug your problems.

    Cite

    If you use LibAFL for your academic work, please cite the following paper:

    root@kitploit:~
    @inproceedings{libafl,
     author       = {Andrea Fioraldi and Dominik Maier and Dongjia Zhang and Davide Balzarotti},
     title        = {{LibAFL: A Framework to Build Modular and Reusable Fuzzers}},
     booktitle    = {Proceedings of the 29th ACM conference on Computer and communications security (CCS)},
     series       = {CCS '22},
     year         = {2022},
     month        = {November},
     location     = {Los Angeles, U.S.A.},
     publisher    = {ACM},
    }
    

    License

    Licensed under either of Apache License, Version 2.0 or MIT license at your option.

    Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
    Download Tool