Many improvements were made over the official afl release - which did not get any feature improvements since November 2017.
Among other changes afl++ has a more performant llvm_mode, supports llvm up to version 11, QEMU 3.1, more speed and crashfixes for QEMU, better *BSD and Android support and much, much more.
Additionally the following features and patches have been integrated:
AFLfast’s power schedules by Marcel Böhme: https://github.com/mboehme/aflfast
The new excellent MOpt mutator: https://github.com/puppet-meteor/MOpt-AFL
InsTrim, a very effective CFG llvm_mode instrumentation implementation for large targets: https://github.com/csienslab/instrim
C. Holler’s afl-fuzz Python mutator module and llvm_mode whitelist support: https://github.com/choller/afl
Custom mutator by a library (instead of Python) by kyakdan
Unicron mode which allows fuzzing of binaries from completely different platforms (integration provided by domenukk)
LAF-Intel or CompCov support for llvm_mode, qemu_mode and unicorn_mode
NeverZero patch for afl-gcc, llvm_mode, qemu_mode and unicorn_mode which prevents a wrapping map value to zero, increases coverage
Persistent mode and deferred forkserver for qemu_mode
Win32 PE binary-only fuzzing with QEMU and Wine
Radamsa mutator (enable with
-Rto add or
-RRto run it exclusivly).
QBDI mode to fuzz android native libraries via QBDI framework
The new CmpLog instrumentation for LLVM and QEMU inspired by Redqueen
LLVM mode Ngram coverage by Adrian Herrera https://github.com/adrianherrera/afl-ngram-pass
A more thorough list is available in the PATCHES file.
|LAF-Intel / CompCov||x||x86[_64]/arm||x86[_64]/arm|
|Ngram prev_loc coverage||x(6)|
|Snapshot LKM support||x||(x)(5)|
(1) default for LLVM >= 9.0, env var for older version due an efficiency bug in llvm <= 8
(2) GCC creates non-performant code, hence it is disabled in gcc_plugin
(3) partially via AFL_CODE_START/AFL_CODE_END
(4) Only for LLVM >= 9 and not all targets compile
(5) upcoming, development in the branch
(6) not compatible with LTO and InsTrim and needs at least LLVM >= 4.1
So all in all this is the best-of afl that is currently out there :-)