Several major and minor additions have been made in this version. Some of the major ones are
- Isolated functions can be fuzzed, instead of only being symbolically executed. Added support for afl-clang-fast through LLVM 6.0.
- Isolated functions can be
flipped
too! This means fast switching between symbolic execution and fuzzing whenever one of the techniques saturates. Also supported through KLEE and afl-clang-fast. - All pre-analysis operations are carried out at the LLVM bitcode level, using several opt passes. This means that the distance metrics (for targeted symbolic execution, e.g.) are much more accurate now and the search for function entry points happens much faster. This also means that a lot less "garbage" is generated and stored as intermediate analysis files.