From af24d872206d50c41469321db3c7f77f265ff357 Mon Sep 17 00:00:00 2001 From: Andrea Fioraldi Date: Fri, 29 Jan 2021 18:48:46 +0100 Subject: qasan readme --- qemu_mode/libqasan/README.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'qemu_mode') diff --git a/qemu_mode/libqasan/README.md b/qemu_mode/libqasan/README.md index 399ebeee..b5c77044 100644 --- a/qemu_mode/libqasan/README.md +++ b/qemu_mode/libqasan/README.md @@ -2,3 +2,18 @@ This library is the injected runtime used by QEMU AddressSanitizer (QASan). +The original repository is [here](https://github.com/andreafioraldi/qasan). + +The version embedded in qemuafl is an updated version of just the usermode part and this runtime in injected via LD_PRELOAD (so works just for dynamically linked binaries). + +The usage is super simple, just set the env var `AFL_USE_QASAN=1` when fuzzing in qemu mode (-Q). afl-fuzz will automatically set AFL_PRELOAD to load this library and enable the QASan instrumentation in afl-qemu-trace. + +For debugging purposes, we still suggest to run the original QASan as the stacktrace support for ARM (just a debug feature, it does not affect the bug finding capabilities during fuzzing) is WIP. + +### When I should use QASan? + +If your target binary is PIC x86_64, you should before give a try to [retrowrite](https://github.com/HexHive/retrowrite) for static rewriting. + +If it fails, or if your binary is for another architecture, or you want to use persistent and snapshot mdoe, AFL++ QASan mode is what you want/have to use. + +Note that the overhead of libdislocator when combined with QEMU mode is much lower but it can catch less bugs. This is a short blanket, take your choice. -- cgit 1.4.1