Crate libafl

source ·
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::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

Structs

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.