diff options
author | van Hauser <vh@thc.org> | 2020-09-10 08:54:57 +0200 |
---|---|---|
committer | van Hauser <vh@thc.org> | 2020-09-10 08:54:57 +0200 |
commit | fdb0452245672db94be0832288f1335e905a2fc8 (patch) | |
tree | 8bbac9c1a645eb9895efcb9b32fe7413321b66ad | |
parent | 454a860020048c5531f518b5691c92949bdc8017 (diff) | |
download | afl++-fdb0452245672db94be0832288f1335e905a2fc8.tar.gz |
update documentation
-rw-r--r-- | README.md | 12 | ||||
-rw-r--r-- | instrumentation/README.gcc_plugin.md | 11 |
2 files changed, 16 insertions, 7 deletions
diff --git a/README.md b/README.md index fb59835c..2fc9d807 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,7 @@ behaviours: * When instrumenting targets, afl-cc will not supersede optimizations. This allows to fuzz targets as same as they are built for debug or release. * afl-fuzz' `-i` option now descends into subdirectories. - * afl-fuzz will skip over empty dictionaries and too large test cases instead + * afl-fuzz will skip over empty dictionaries and too-large test cases instead of failing. ## Contents @@ -63,20 +63,20 @@ behaviours: | Feature/Instrumentation | afl-gcc | llvm | gcc_plugin | qemu_mode | unicorn_mode | | -------------------------|:-------:|:---------:|:----------:|:----------------:|:------------:| - | NeverZero | x86[_64]| x(1) | (2) | x | x | + | NeverZero | x86[_64]| x(1) | x | x | x | | Persistent Mode | | x | x | x86[_64]/arm[64] | x | | LAF-Intel / CompCov | | x | | x86[_64]/arm[64] | x86[_64]/arm | | CmpLog | | x | | x86[_64]/arm[64] | | - | Selective Instrumentation| | x | x | (x)(3) | | + | Selective Instrumentation| | x | x | x | | | Non-Colliding Coverage | | x(4) | | (x)(5) | | | Ngram prev_loc Coverage | | x(6) | | | | | Context Coverage | | x(6) | | | | | Auto Dictionary | | x(7) | | | | - | Snapshot LKM Support | | x | | (x)(5) | | + | Snapshot LKM Support | | x | 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 + 3. (currently unassigned) 4. with pcguard mode and LTO mode for LLVM >= 11 5. upcoming, development in the branch 6. not compatible with LTO instrumentation and needs at least LLVM >= 4.1 @@ -92,8 +92,6 @@ behaviours: * AFLfast's power schedules by Marcel Böhme: [https://github.com/mboehme/aflfast](https://github.com/mboehme/aflfast) * The MOpt mutator: [https://github.com/puppet-meteor/MOpt-AFL](https://github.com/puppet-meteor/MOpt-AFL) * LLVM mode Ngram coverage by Adrian Herrera [https://github.com/adrianherrera/afl-ngram-pass](https://github.com/adrianherrera/afl-ngram-pass) - * C. Holler's afl-fuzz Python mutator module: [https://github.com/choller/afl](https://github.com/choller/afl) - * Custom mutator by a library (instead of Python) by kyakdan * LAF-Intel/CompCov support for instrumentation, qemu_mode and unicorn_mode (with enhanced capabilities) * Radamsa and honggfuzz mutators (as custom mutators). * QBDI mode to fuzz android native libraries via Quarkslab's [QBDI](https://github.com/QBDI/QBDI) framework diff --git a/instrumentation/README.gcc_plugin.md b/instrumentation/README.gcc_plugin.md index 53519b90..919801d1 100644 --- a/instrumentation/README.gcc_plugin.md +++ b/instrumentation/README.gcc_plugin.md @@ -3,6 +3,13 @@ See [../README.md](../README.md) for the general instruction manual. See [README.llvm.md](README.llvm.md) for the LLVM-based instrumentation. +TLDR: + * `apt-get install gcc-VERSION-plugin-dev` + * `make` + * gcc and g++ must point to the gcc-VERSION you you have to set AFL_CC/AFL_CXX + to point to these! + * just use afl-gcc-fast/afl-g++-fast normally like you would afl-clang-fast + ## 1) Introduction The code in this directory allows you to instrument programs for AFL using @@ -40,8 +47,12 @@ installing the `gcc-VERSION-plugin-dev` packages. To build the instrumentation itself, type 'make'. This will generate binaries called afl-gcc-fast and afl-g++-fast in the parent directory. + +The gcc and g++ compiler links have to point to gcc-VERSION - or set these +by pointing the environment variables AFL_CC/AFL_CXX to them. If the CC/CXX have been overridden, those compilers will be used from those wrappers without using AFL_CXX/AFL_CC settings. + Once this is done, you can instrument third-party code in a way similar to the standard operating mode of AFL, e.g.: |