aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvanhauser-thc <vh@thc.org>2021-05-24 14:05:34 +0200
committervanhauser-thc <vh@thc.org>2021-05-24 14:05:34 +0200
commit07c8024ef11686c58c623d621f236c5312689d1b (patch)
tree260668b935d2490a4e7f694b5fcd2a8ca1bbbd03
parentbb45398d0bbad0b86e311fa6effc286206ecc611 (diff)
downloadafl++-07c8024ef11686c58c623d621f236c5312689d1b.tar.gz
add libafl to binary-only doc
-rw-r--r--README.md28
-rw-r--r--docs/binaryonly_fuzzing.md20
2 files changed, 37 insertions, 11 deletions
diff --git a/README.md b/README.md
index 0b89845c..501f0591 100644
--- a/README.md
+++ b/README.md
@@ -791,16 +791,19 @@ How this can look like can e.g. be seen at afl++'s setup in Google's [oss-fuzz](
When source code is *NOT* available, afl++ offers various support for fast,
on-the-fly instrumentation of black-box binaries.
-If you do not have to use Unicorn the following setup is recommended:
+If you do not have to use Unicorn the following setup is recommended to use
+qemu_mode:
* run 1 afl-fuzz -Q instance with CMPLOG (`-c 0` + `AFL_COMPCOV_LEVEL=2`)
* run 1 afl-fuzz -Q instance with QASAN (`AFL_USE_QASAN=1`)
* run 1 afl-fuzz -Q instance with LAF (``AFL_PRELOAD=libcmpcov.so` + `AFL_COMPCOV_LEVEL=2`)
+Alternatively you can use frida_mode, just switch `-Q` with `-O` and remove the
+LAF instance.
Then run as many instances as you have cores left with either -Q mode or - better -
-use a binary rewriter like afl-dyninst, retrowrite, zipr, fibre, etc.
+use a binary rewriter like afl-dyninst, retrowrite, zaflr, fibre, etc.
-For Qemu mode, check out the persistent mode and snapshot features, they give
-a huge speed improvement!
+For Qemu and Frida mode, check out the persistent mode and snapshot features,
+they give a huge speed improvement!
### QEMU
@@ -812,8 +815,7 @@ feature by doing:
cd qemu_mode
./build_qemu_support.sh
```
-For additional instructions and caveats, see [qemu_mode/README.md](qemu_mode/README.md) -
-check out the snapshot feature! :-)
+For additional instructions and caveats, see [qemu_mode/README.md](qemu_mode/README.md).
If possible you should use the persistent mode, see [qemu_mode/README.persistent.md](qemu_mode/README.persistent.md).
The mode is approximately 2-5x slower than compile-time instrumentation, and is
less conducive to parallelization.
@@ -824,6 +826,20 @@ the speed compared to qemu_mode (but slower than persistent mode).
Note that several other binary rewriters exist, all with their advantages and
caveats.
+### Frida
+
+Frida mode is sometimes faster and sometimes slower than Qemu mode.
+It is also newer, lacks COMPCOV, but supports MacOS.
+
+```shell
+cd frida_mode
+make
+```
+For additional instructions and caveats, see [frida_mode/README.md](frida_mode/README.md).
+If possible you should use the persistent mode, see [qemu_frida/README.persistent.md](qemu_frida/README.persistent.md).
+The mode is approximately 2-5x slower than compile-time instrumentation, and is
+less conducive to parallelization.
+
### Unicorn
For non-Linux binaries you can use afl++'s unicorn mode which can emulate
diff --git a/docs/binaryonly_fuzzing.md b/docs/binaryonly_fuzzing.md
index 2f5dd614..bab64a30 100644
--- a/docs/binaryonly_fuzzing.md
+++ b/docs/binaryonly_fuzzing.md
@@ -41,15 +41,20 @@
As it is included in afl++ this needs no URL.
+ If you like to code a customized fuzzer without much work, we highly
+ recommend to check out our sister project libafl which will support QEMU
+ very too:
+ [https://github.com/AFLplusplus/LibAFL](https://github.com/AFLplusplus/LibAFL)
+
## AFL FRIDA
- In frida_mode you can fuzz binary-only targets easily like with QEMU,
- with the advantage that frida_mode also works on MacOS (both intel and M1).
+ In frida_mode you can fuzz binary-only targets easily like with QEMU,
+ with the advantage that frida_mode also works on MacOS (both intel and M1).
- If you want to fuzz a binary-only library then you can fuzz it with
- frida-gum via utils/afl_frida/, you will have to write a harness to
- call the target function in the library, use afl-frida.c as a template.
+ If you want to fuzz a binary-only library then you can fuzz it with
+ frida-gum via utils/afl_frida/, you will have to write a harness to
+ call the target function in the library, use afl-frida.c as a template.
Both come with afl++ so this needs no URL.
@@ -58,6 +63,11 @@
[https://github.com/ttdennis/fpicker/](https://github.com/ttdennis/fpicker/)
as an intermediate that uses afl++ for fuzzing.
+ If you like to code a customized fuzzer without much work, we highly
+ recommend to check out our sister project libafl which supports Frida too:
+ [https://github.com/AFLplusplus/LibAFL](https://github.com/AFLplusplus/LibAFL)
+ Working examples already exist :-)
+
## WINE+QEMU