
* sample implementation of tracking enforcement (incomplete) * helpful compiler output * make it look like a real compiler output * ensure that the macro may be used outside of libafl * separate index/novelty tracking funcs * default const generic values so that we don't need to change this everywhere * fix tests * rollback unnecessary specification of stdmapobserver * register metadata in doc tests * doc fixes * doc cleanup * doc cleanup 2 * reduce implementor overhead to zero * renaming/docs fixes * asref isn't reflexive?? * generalization stage updates * add better documentation about require_{indices,novelties}_tracking * remaining generic updates * round one CI pass (knowingly introduces breaking changes) * typo * round 2 clippy * rollback: libafl_frida changes * fmt * moar porting * fix remaining fuzzers * fix windows build, maybe * fixup libafl_libfuzzer * fmt nighlty all the things * attempt to fix some broken additions * fix fmt * oops * fix new invocation * minimizer scheduler fixes * fix accounting * rename * fix * Fix build * Sort generics * Move more generics into the right place * Rename A -> C * Fix test * Fix test some more * Fix doc some more * critical formatting * More A->C * CanTrack harder --------- Co-authored-by: Dominik Maier <dmnk@google.com>
2.9 KiB
2.9 KiB
LibAFL_bolts: OS and Fuzzer Dev's Libary Collection.
The libafl_bolts
crate exposes a lot of low-level features of LibAFL for projects that are unrelated to fuzzing, or just fuzzers completely different to LibAFL.
Some cross-platform things in bolts include (but are not limited to):
- SerdeAnyMap: a map that stores and retrieves elements by type and is serializable and deserializable
- ShMem: A cross-platform (Windows, Linux, Android, MacOS) shared memory implementation
- LLMP: A fast, lock-free IPC mechanism via SharedMap
- Core_affinity: A maintained version of
core_affinity
that can be used to get core information and bind processes to cores - Rands: Fast random number generators for fuzzing (like RomuRand)
- MiniBSOD: get and print information about the current process state including important registers.
- Tuples: Haskel-like compile-time tuple lists
- Os: OS specific stuff like signal handling, windows exception handling, pipes, and helpers for
fork
LibAFL_bolts is written and maintained by
- Andrea Fioraldi andrea@aflplus.plus
- Dominik Maier dominik@aflplus.plus
- s1341 github@shmarya.net
- Dongjia Zhang toka@aflplus.plus
- Addison Crump me@addisoncrump.info
Contributing
For bugs, feel free to open issues or contact us directly. Thank you for your support. <3
Even though we will gladly assist you in finishing up your PR, try to
- keep all the crates compiling with stable rust (hide the eventual non-stable code under
cfg
s) - run
cargo nightly fmt
on your code before pushing - check the output of
cargo clippy --all
or./clippy.sh
- run
cargo build --no-default-features
to check forno_std
compatibility (and possibly add#[cfg(feature = "std")]
) to hide parts of your code.
Some of the parts in this list may be hard, don't be afraid to open a PR if you cannot fix them by yourself, so we can help.
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.
Dependencies under more restrictive licenses, such as GPL or AGPL, can be enabled using the respective feature in each crate when it is present, such as the 'agpl' feature of the libafl crate.