Expand description

Welcome to LibAFL

Re-exports

pub extern crate alloc;
pub use fuzzer::*;

Modules

Bolts are no conceptual fuzzing elements, but they keep libafl-based fuzzers together.

Corpuses contain the testcases, either in memory, on disk, or somewhere else.

Eventmanager manages all events that go to other instances of the fuzzer.

Executors take input, and run it in the target.

The feedbacks reduce observer state after each run to a single is_interesting-value. If a testcase is interesting, it may be added to a Corpus.

The Fuzzer is the main struct for a fuzz campaign.

Generators may generate bytes or, in general, data, for inputs.

Inputs are the actual contents sent to a target for each exeuction.

Keep stats, and display them to the user. Usually used in a broker, or main node, of some sort.

Mutators mutate input during fuzzing.

Observers give insights about runs of a target, such as coverage, timing, stack depth, and more.

The purpose of this module is to alleviate imports of many components by adding a glob import.

Schedule the access to the Corpus.

A Stage is a technique used during fuzzing, working on one crate::corpus::Corpus entry, and potentially altering it or creating new entries. A well-known Stage, for example, is the mutational stage, running multiple crate::mutators::Mutators against a crate::corpus::Testcase, potentially storing new ones, according to crate::feedbacks::Feedback. Other stages may enrich crate::corpus::Testcases with metadata.

The fuzzer, and state are the core pieces of every good fuzzer

Macros

Create AnyMap and NamedAnyMap for a given trait

Creates the serde registry for serialization and deserialization of SerdeAny. Each element needs to be registered so that it can be deserialized.

Variadic macro to create a chain of AndFeedback

Variadic macro to create a chain of (fast) AndFeedback

Variadic macro to create a NotFeedback

Variadic macro to create a chain of OrFeedback

Combines multiple feedbacks with an OR operation, not executing feedbacks after the first positive result

Implement AsAny for a type

Implement a SerdeAny, registering it in the RegistryBuilder when on std

Mark the elapsed time for the given feature

Mark the elapsed time for the given feature

Register a SerdeAny type in the RegistryBuilder

Start the timer

Iterate over a tuple, executing the given expr for each element.

Iterate over a tuple, executing the given expr for each element, granting mut access.

Structs

Empty struct to use when errors_backtrace is disabled

Enums

Main error struct for LibAFL

Attribute Macros

Marks a function or static variable as a library/executable constructor. This uses OS-specific linker sections to call a specific function at load time.