Expand description
Welcome to LibAFL
Re-exports
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::Mutator
s against a crate::corpus::Testcase
, potentially storing new ones, according to crate::feedbacks::Feedback
.
Other stages may enrich crate::corpus::Testcase
s with metadata.The fuzzer, and state are the core pieces of every good fuzzer
Macros
Create
AnyMap
and NamedAnyMap
for a given traitVariadic 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 resultImplement
AsAny
for a typeImplement a
SerdeAny
, registering it in the RegistryBuilder
when on stdMark the elapsed time for the given feature
Mark the elapsed time for the given feature
None
type to satisfy the type infearence in an Option
Utility macro to call
Corpus::random_id
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 disabledEnums
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.