diff options
author | Andrea Fioraldi <andreafioraldi@gmail.com> | 2019-07-19 17:47:53 +0200 |
---|---|---|
committer | Andrea Fioraldi <andreafioraldi@gmail.com> | 2019-07-19 17:47:53 +0200 |
commit | 7b6d51a9d0775466ac3de6156180062edd1e3d9d (patch) | |
tree | 5116053ab7307e9a54b5028d094b913bd837d442 /qemu_mode/libcompcov/README.compcov | |
parent | d3eba93c7d3b6251911df4dddd30984f3fdfd696 (diff) | |
download | afl++-7b6d51a9d0775466ac3de6156180062edd1e3d9d.tar.gz |
libcompcov for QEMU
Diffstat (limited to 'qemu_mode/libcompcov/README.compcov')
-rw-r--r-- | qemu_mode/libcompcov/README.compcov | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/qemu_mode/libcompcov/README.compcov b/qemu_mode/libcompcov/README.compcov new file mode 100644 index 00000000..2a4a0ee5 --- /dev/null +++ b/qemu_mode/libcompcov/README.compcov @@ -0,0 +1,33 @@ +================================================================ +strcmp() / memcmp() CompareCoverage library for AFLplusplus-QEMU +================================================================ + + Written by Andrea Fioraldi <andreafioraldi@gmail.com> + +This Linux-only companion library allows you to instrument strcmp(), memcmp(), +and related functions to log the CompareCoverage of these libcalls. + +Use this with caution. While this can speedup a lot the bypass of hard +branch conditions it can also waste a lot of time and take up unnecessary space +in the shared memory when logging the coverage related to functions that +doesn't process input-related data. + +To use the library, you *need* to make sure that your fuzzing target is linked +dynamically and make use of strcmp(), memcmp(), and related functions. +For optimized binaries this is an issue, those functions are often inlined +and this module is not capable to log the coverage in this case. + +If you have the source code of the fuzzing target you should nto use this +library and QEMU but build ot with afl-clang-fast and the laf-intel options. + +To use this library make sure to preload it with AFL_PRELOAD. + + export AFL_PRELOAD=/path/to/libcompcov.so + export AFL_QEMU_COMPCOV=1 + + afl-fuzz -Q -i input -o output <your options> -- <target args> + +The library make use of https://github.com/ouadev/proc_maps_parser and so it is +Linux specific. However this is not a strict dependency, other UNIX operating +systems can be supported simply replacing the code related to the +/proc/self/maps parsing. |