This document lists important changes in AFL++, for example, major behavior changes.
With AFL++ 4.00, we introduced the following changes from previous behaviors:
With AFL++ 3.15, we introduced the following changes from previous behaviors:
-Ci
now descend into subdirectories like afl-fuzz -i
does (but note that afl-cmin.bash does not)With AFL++ 3.14, we introduced the following changes from previous behaviors:
-M main
anymoreWith AFL++ 3.10, we introduced the following changes from previous behaviors:
-t
option now means to auto-calculate the timeout with the value given being the maximum timeout. The original meaning of “skipping timeouts instead of abort” is now inherent to the -t
option.With AFL++ 3.00, we introduced changes that break some previous AFL and AFL++ behaviors and defaults:
instrumentation/
folder.-M
or -S
is specified, -S default
is assumed, so more fuzzers can easily be added later-i
input directory option now descends into subdirectories. It also does not fail on crashes and too large files, instead it skips them and uses them for splicing mutations-m
none is now the default, set memory limits (in MB) with, e.g., -m 250
-M
) and can be enabled with -D
TESTCASE_CACHE
or by specifying the environment variable AFL_TESTCACHE_SIZE
(in MB). Good values are between 50-500 (default: 50).-M
mains do not perform trimmingexamples/
got renamed to utils/
libtokencap/
, libdislocator/
, and qdbi_mode/
were moved to utils/
PATH
and last in AFL_PATH