2021-09-06 21:29:51 +02:00
|
|
|
# Important changes in AFL++
|
|
|
|
|
|
2021-12-04 20:38:00 +01:00
|
|
|
This document lists important changes in AFL++, for example, major behavior
|
|
|
|
|
changes.
|
2021-08-12 23:06:34 +02:00
|
|
|
|
|
|
|
|
## From version 3.00 onwards
|
|
|
|
|
|
2021-12-26 03:54:29 +01:00
|
|
|
With AFL++ 4.00, we introduced the following changes from previous behaviors:
|
2022-01-03 20:42:34 +01:00
|
|
|
* the complete documentation was overhauled and restructured thanks to @llzmb!
|
2022-01-20 20:33:23 +01:00
|
|
|
* a new CMPLOG target format requires recompiling CMPLOG targets for use with
|
|
|
|
|
AFL++ 4.0 onwards
|
2021-12-26 03:54:29 +01:00
|
|
|
* better naming for several fields in the UI
|
2021-08-12 23:06:34 +02:00
|
|
|
|
2021-12-04 20:55:37 +01:00
|
|
|
With AFL++ 3.15, we introduced the following changes from previous behaviors:
|
2022-01-20 20:33:23 +01:00
|
|
|
* afl-cmin and afl-showmap `-Ci` now descend into subdirectories like afl-fuzz
|
|
|
|
|
`-i` does (but note that afl-cmin.bash does not)
|
2021-08-12 23:06:34 +02:00
|
|
|
|
2021-12-04 20:55:37 +01:00
|
|
|
With AFL++ 3.14, we introduced the following changes from previous behaviors:
|
2022-01-20 20:33:23 +01:00
|
|
|
* afl-fuzz: deterministic fuzzing is not a default for `-M main` anymore
|
2021-12-02 20:45:48 +01:00
|
|
|
* afl-cmin/afl-showmap -i now descends into subdirectories (afl-cmin.bash,
|
|
|
|
|
however, does not)
|
2021-08-12 23:06:34 +02:00
|
|
|
|
2021-12-04 20:55:37 +01:00
|
|
|
With AFL++ 3.10, we introduced the following changes from previous behaviors:
|
2022-01-20 20:33:23 +01:00
|
|
|
* The '+' feature of the `-t` option now means to auto-calculate the timeout
|
2021-08-12 23:06:34 +02:00
|
|
|
with the value given being the maximum timeout. The original meaning of
|
2022-01-20 20:33:23 +01:00
|
|
|
"skipping timeouts instead of abort" is now inherent to the `-t` option.
|
2021-08-12 23:06:34 +02:00
|
|
|
|
2021-12-04 20:55:37 +01:00
|
|
|
With AFL++ 3.00, we introduced changes that break some previous AFL and AFL++
|
2021-12-02 17:08:06 +01:00
|
|
|
behaviors and defaults:
|
2021-08-12 23:06:34 +02:00
|
|
|
* There are no llvm_mode and gcc_plugin subdirectories anymore and there is
|
|
|
|
|
only one compiler: afl-cc. All previous compilers now symlink to this one.
|
|
|
|
|
All instrumentation source code is now in the `instrumentation/` folder.
|
|
|
|
|
* The gcc_plugin was replaced with a new version submitted by AdaCore that
|
|
|
|
|
supports more features. Thank you!
|
2021-12-04 21:14:50 +01:00
|
|
|
* QEMU mode got upgraded to QEMU 5.1, but to be able to build this a current
|
|
|
|
|
ninja build tool version and python3 setuptools are required. QEMU mode also
|
2021-12-04 20:38:00 +01:00
|
|
|
got new options like snapshotting, instrumenting specific shared libraries,
|
|
|
|
|
etc. Additionally QEMU 5.1 supports more CPU targets so this is really worth
|
|
|
|
|
it.
|
2021-08-12 23:06:34 +02:00
|
|
|
* When instrumenting targets, afl-cc will not supersede optimizations anymore
|
2021-11-21 21:11:52 +01:00
|
|
|
if any were given. This allows to fuzz targets build regularly like those
|
2021-08-12 23:06:34 +02:00
|
|
|
for debug or release versions.
|
|
|
|
|
* afl-fuzz:
|
2022-01-20 20:33:23 +01:00
|
|
|
* if neither `-M` or `-S` is specified, `-S default` is assumed, so more
|
|
|
|
|
fuzzers can easily be added later
|
2021-12-04 20:38:00 +01:00
|
|
|
* `-i` input directory option now descends into subdirectories. It also does
|
2022-01-11 15:13:04 +01:00
|
|
|
not fail on crashes and too large files, instead it skips them and uses
|
2021-12-04 20:38:00 +01:00
|
|
|
them for splicing mutations
|
2022-01-20 20:33:23 +01:00
|
|
|
* `-m` none is now the default, set memory limits (in MB) with, e.g., `-m
|
|
|
|
|
250`
|
|
|
|
|
* deterministic fuzzing is now disabled by default (unless using `-M`) and
|
|
|
|
|
can be enabled with `-D`
|
2021-11-21 21:11:52 +01:00
|
|
|
* a caching of test cases can now be performed and can be modified by
|
2022-01-20 20:33:23 +01:00
|
|
|
editing config.h for `TESTCASE_CACHE` or by specifying the environment
|
2021-12-02 17:13:12 +01:00
|
|
|
variable `AFL_TESTCACHE_SIZE` (in MB). Good values are between 50-500
|
|
|
|
|
(default: 50).
|
2022-01-20 20:33:23 +01:00
|
|
|
* `-M` mains do not perform trimming
|
|
|
|
|
* `examples/` got renamed to `utils/`
|
|
|
|
|
* `libtokencap/`, `libdislocator/`, and `qdbi_mode/` were moved to `utils/`
|
|
|
|
|
* afl-cmin/afl-cmin.bash now search first in `PATH` and last in `AFL_PATH`
|