Bite-sized advice for those who understand the basics, but can't be bothered to read or memorize every other piece of documentation for AFL.
See dictionaries/README.md to learn how.
See parallel_fuzzing.md for step-by-step tips.
It's easy. Consult utils/libdislocator/README.md for usage tips.
Try the bundled afl-analyze
tool; it's got colors and all!
Run the bundled afl-plot
utility to generate browser-friendly graphs.
Check out the fuzzer_stats
file in the AFL output dir or try afl-whatsup
.
It could be important - consult docs/status_screen.md right away!
Consult section #5 in README.llvm.md for tips.
Check out instrumentation/ for a faster alternative to afl-gcc!
Check out qemu_mode/README.md and unicorn_mode/README.md for more.
Try the bundled afl-tmin
tool - and get small repro files fast!
-C
to enable the peruvian were-rabbit mode.
Find essential survival tips at http://lcamtuf.coredump.cx/prep/.
Try running an AFL-generated corpus through ASAN, MSAN, or Valgrind.
See docs/perf_tips.md for pro tips.
Specify AFL_HARDEN=1
in the environment to enable hardening flags.
It happens, but usually isn't hard to diagnose. See section #7 in README.md for tips.
Add some
sanity-checking assert()
/ abort()
statements to effortlessly catch logic bugs.
Check out docs/technical_details.md for all the gory details in one place!
Be sure to check out docs/sister_projects.md before writing your own.
You can find a simple solution in utils/argv_fuzzing.
Remove the checksum-checking code or use a postprocessor!
See afl_custom_post_process
in custom_mutators/examples/example.c for more.