This variable is a standard way to inject options for the C preprocessor. It's respected by the implicit rules of make and autoconf/automake. Debian sets this variable during package build to inject `-D_FORTIFY_SOURCE=2` and we would like afl++ to respect it. Note that this commit also adds $(CFLAGS) in the build of afl-performance.o where it was missing. It might have been on purpose but we want to keep CFLAGS everywhere as well since Debian injects various options through that variable (for hardening and reproducibility).
Custom Mutators
Custom mutators enhance and alter the mutation strategies of afl++. For further information and documentation on how to write your own, read the docs.
Production-Ready Custom Mutators
This directory holds ready to use custom mutators. Just type "make" in the individual subdirectories.
Use with e.g.
AFL_CUSTOM_MUTATOR_LIBRARY=custom_mutators/radamsa/radamsa-mutator.so afl-fuzz ....
and add AFL_CUSTOM_MUTATOR_ONLY=1
if you only want to use the custom mutator.
Multiple custom mutators can be used by separating their paths with :
in the environment variable.
3rd Party Custom Mutators
Superion Mutators
Adrian Tiron ported the Superion grammar fuzzer to afl++, it is WIP and requires cmake (among other things): https://github.com/adrian-rt/superion-mutator
libprotobuf Mutators
There are two WIP protobuf projects, that require work to be working though:
transforms protobuf raw: https://github.com/bruce30262/libprotobuf-mutator_fuzzing_learning/tree/master/4_libprotobuf_aflpp_custom_mutator
has a transform function you need to fill for your protobuf format, however needs to be ported to the updated afl++ custom mutator API (not much work): https://github.com/thebabush/afl-libprotobuf-mutator