afl-fuzz(8)
π afl-fuzz(8) π
okay bestie, this one is from the System Manager's Manual and it is a lot β but we are getting through every single flag together, no cap. π β¨
π NAME π
afl-fuzz β that is literally the name. Iconic. Periodt. π
π¦ SYNOPSIS π¦
(the original does not list synopsis lines here β it just rolls straight into OPTIONS, so we do too) π«Ά
β¨ OPTIONS β¨
π§Έ Required parameters:
-i dirβ input directory full of test cases. You can also pass'-'to resume, and bestie, also seeAFL_AUTORESUME. π-o dirβ output directory where the fuzzer puts its findings. Slay. π
π₯ Execution control settings:
-P strategyβ sets the fix mutation strategy:explore(focus on new coverage) orexploit(focus on triggering crashes). You can also set a number of seconds after without any finds it switches toexploitmode, and back on new coverage (default: 1000). β-p scheduleβ power schedules compute a seed's performance score:explore(default),fast,exploit,seek,rare,mmopt,coe,lin quadβ seedocs/FAQ.mdfor more information. π¦-f fileβ location read by the fuzzed program (default: stdin or @@). π-t msecβ timeout for each run (auto-scaled,default 1000 ms). Add a'+'to auto-calculate the timeout, the value being the maximum. β³-m megsβ memory limit for child process (0 MB,0= no limit [default]). π§-Oβ use binary-only instrumentation (FRIDA mode). π₯-Qβ use binary-only instrumentation (QEMU mode). π-Uβ use unicorn-based instrumentation (Unicorn mode). π¦-Wβ use qemu-based instrumentation with Wine (Wine mode). π·-Xβ use VM fuzzing (NYX mode - standalone mode). π-Yβ use VM fuzzing (NYX mode - multiple instances mode). π-K dirβ use python script to interact with GUI (GUI mode). π«Ά
π§ͺ Mutator settings:
-a typeβ target input format,"text"or"binary"(default: generic). π-g minlengthβ set min length of generated fuzz input (default: 1). π-G maxlengthβ set max length of generated fuzz input (default: 1048576). πΈ-L minutesβ use MOpt(imize) mode and set the time limit for entering the pacemaker mode (minutes of no new finds).0= immediately,-1= immediately and together with normal mutation.
Note: this option is usually not very effective. π
-uβ enable testcase splicing. βοΈβ¨-c programβ enable CmpLog by specifying a binary compiled for it. If using QEMU/FRIDA or the fuzzing target is compiled for CmpLog then use'-c 0'. To disable CMPLOG use'-c -'. π§-l cmplog_optsβ CmpLog configuration values (e.g."2ATR"):1= small files2= larger files (default)3= all filesA= arithmetic solvingT= transformational solvingX= extreme transform solvingR= random colorization bytesM= tightness scheduling (favour barely-passed cmps)Z= size-derive mining (compile target withAFL_LLVM_BUG_ALLOCSIZE_DERIVE). π
π¦ Fuzzing behavior settings:
-Zβ sequential queue selection instead of weighted random. π―-Nβ do not unlink the fuzzing input file (for devices etc.). π-nβ fuzz without instrumentation (non-instrumented mode). π«Ά-x dict_fileβ fuzzer dictionary (seeREADME.md, specify up to 4 times). π-w san_binaryβ specify the extra sanitizer instrumented binaries, can be specified multiple times. Readdocs/SAND.mdfor details. π§Ό
π§Έ Test settings:
-s seedβ use a fixed seed for the RNG. π±-V secondsβ fuzz for a specified time then terminate (fuzz time only!). β°-E execsβ fuzz for an approx. no. of total executions then terminate.
Note: not precise and can have several more executions. π
π Other stuff:
-M/-S idβ distributed mode (-Msets-Zand disables trimming). Seedocs/fuzzing_in_depth.md#c-using-multiple-coresfor effective recommendations for parallel fuzzing. π-F pathβ sync to a foreign fuzzer queue directory (requires-M, can be specified up to 32 times). π-zβ skip the enhanced deterministic fuzzing (note that the old-dand-Dflags are ignored.). π«-T textβ text banner to show on the screen. π-I commandβ execute this command when a new crash is found, the crash file path is passed as argument. π¨-Cβ crash exploration mode (the peruvian rabbit thing). π°-b cpu_idβ bind the fuzzing process to the specified CPU core (0-...). π-e extβ file extension for the fuzz test input file (if needed). π
okay so the environment variables used are literally the backstage pass crew for your fuzz session β set them and the whole run changes energy. Full roster, no skips, fr fr:
LD_BIND_LAZYβ do not set theLD_BIND_NOWenv var for the target.ASAN_OPTIONSβ custom settings for ASAN; it must containabort_on_error=1andsymbolize=0.MSAN_OPTIONSβ custom settings for MSAN; it must containexitcode=86andsymbolize=0.AFL_ALLOW_CORESβ allow creating core files of target crashes.AFL_AUTORESUMEβ resume fuzzing if the directory specified by-oalready exists.AFL_BENCH_JUST_ONEβ run the target just once.AFL_BENCH_UNTIL_CRASHβ exit soon when the first crashing input has been found.AFL_CMPLOG_ONLY_NEWβ do not run cmplog on initial testcases (good for resumes!).AFL_CRASH_EXITCODEβ optional child exit code to be interpreted as a crash.AFL_CUSTOM_MUTATOR_LIBRARYβ lib withafl_custom_fuzz()to mutate inputs.AFL_CUSTOM_MUTATOR_ONLYβ avoid AFL++βs internal mutators.AFL_CYCLE_SCHEDULESβ after completing a cycle, switch to a different-pschedule.AFL_DEBUGβ extra debugging output for Python mode trimming.AFL_DEBUG_CHILDβ do not suppress stdout/stderr from target.AFL_DISABLE_REDUNDANTβ disable any queue item that is redundant.AFL_DISABLE_TRIMβ disable the trimming of test cases.AFL_DUMB_FORKSRVβ use fork server without feedback from target.AFL_EXIT_WHEN_DONEβ exit when all inputs are run and no new finds are found.AFL_EXIT_ON_TIMEβ exit when no new coverage is found within the specified time.AFL_EXIT_ON_SEED_ISSUESβ exit on any kind of seed issues.AFL_EXPAND_HAVOC_NOWβ immediately enable expand havoc mode (default: after 60 minutes and a cycle without finds).AFL_FAST_CALβ limit the calibration stage to three cycles for speedup.AFL_FORCE_UIβ force showing the status screen (for virtual consoles).AFL_FORKSRV_INIT_TMOUTβ time spent waiting for forkserver during startup (in ms).AFL_FRAMESHIFT_DISABLEβ disable FRAMESHIFT algorithm.AFL_HANG_TMOUTβ override timeout value (in milliseconds).AFL_I_DONT_CARE_ABOUT_MISSING_CRASHESβ donβt warn about core dump handlers.AFL_IGNORE_PROBLEMSβ do not abort fuzzing if an incorrect setup is detected.AFL_IGNORE_PROBLEMS_COVERAGEβ if set in addition toAFL_IGNORE_PROBLEMS, also ignore those libs for coverage.AFL_IGNORE_SEED_PROBLEMSβ skip over crashes and timeouts in the seeds instead of exiting.AFL_IGNORE_TIMEOUTSβ do not process or save any timeouts.AFL_IGNORE_UNKNOWN_ENVSβ donβt warn on unknown env vars.AFL_IMPORT_FIRSTβ sync and import test cases from other fuzzer instances first.AFL_INPUT_LEN_MIN/AFL_INPUT_LEN_MAXβ like-g/-G: set min/max fuzz length produced.AFL_INPUT_PLACEHOLDERβ custom placeholder string for input file arguments (default:@@); use this when@@conflicts with your target programβs arguments.AFL_PIZZA_MODEπ β1enforces pizza mode,-1disables it for April 1st,0(default) activates it on April 1st.AFL_KILL_SIGNALβ Signal ID delivered to child processes on timeout, etc. (default:SIGKILL).AFL_FORK_SERVER_KILL_SIGNALβ Kill signal for the fork server on termination (default:SIGTERM). If unset andAFL_KILL_SIGNALis set, that value will be used.AFL_MAP_SIZEβ the shared memory size for that target. Must be >= the size the target was compiled for.AFL_MAX_DET_EXTRASβ if more entries are in the dictionary list than this value, they are randomly selected instead of all of them being used. Defaults to200.AFL_NO_AFFINITYβ do not check for an unused cpu core to use for fuzzing.AFL_TRY_AFFINITYβ try to bind to an unused core, but donβt fail if unsuccessful.AFL_NO_ARITHβ skip arithmetic mutations in deterministic stage.AFL_NO_AUTODICTβ do not load an offered auto dictionary compiled into a target.AFL_NO_CPU_REDβ avoid red color for showing very high cpu usage.AFL_NO_FORKSRVβ run target viaexecveinstead of using the forkserver.AFL_NO_SNAPSHOTβ do not use the snapshot feature (if the snapshot lkm is loaded).AFL_NO_STARTUP_CALIBRATIONβ no initial seed calibration, start fuzzing at once.AFL_NO_WARN_INSTABILITYβ donβt warn about instability issues on startup calibration.AFL_NO_UIβ switch status screen off.AFL_NYX_AUX_SIZEβ size of the Nyx auxiliary buffer. Must be a multiple of4096. Increase this value in case the crash reports are truncated. Default value is4096.AFL_NYX_DISABLE_SNAPSHOT_MODEβ disable snapshot mode (must be supported by the agent).AFL_NYX_LOGβ output NYX hprintf messages to another file.AFL_NYX_REUSE_SNAPSHOTβ reuse an existing Nyx root snapshot.AFL_OLD_CHILD_SYNCβ use file descriptor persistent-mode synchronization instead of the default shared memory + futex path (Linux only).AFL_PATHβ path to AFL support binaries.AFL_PYTHON_MODULEβ mutate and trim inputs with the specified Python module.AFL_QUIETβ suppress forkserver status messages.AFL_POST_PROCESS_KEEP_ORIGINALβ save the file as it was prior post-processing to the queue, but execute the post-processed one.AFL_PRELOADβLD_PRELOAD/DYLD_INSERT_LIBRARIESsettings for target.AFL_TARGET_ENVβ pass extra environment variables to target.AFL_SHUFFLE_QUEUEβ reorder the input queue randomly on startup.AFL_SKIP_BIN_CHECKβ skip afl compatibility checks, also disables auto map size.AFL_SKIP_CPUFREQβ do not warn about variable cpu clocking.AFL_STATSDβ enables StatsD metrics collection.AFL_STATSD_HOSTβ change default statsd host (default127.0.0.1).AFL_STATSD_PORTβ change default statsd port (default:8125).AFL_STATSD_TAGS_FLAVORβ set statsd tags format (default: disable tags). Supported formats:dogstatsd,librato,signalfx,influxdb.AFL_FORCE_FASTRESUMEβ force loading a fast resume file even if the target changed.AFL_NO_FASTRESUMEβ do not read or write a fast resume file.AFL_NO_SYNCβ disables all syncing.AFL_SYNC_TIMEβ sync time between fuzzing instances (in minutes).AFL_FINAL_SYNCβ sync a final time when exiting (will delay the exit!).AFL_NO_CRASH_READMEβ do not create a README in the crashes directory.AFL_TESTCACHE_SIZEβ use a cache for testcases, improves performance (in MB).AFL_TMPDIRβ directory to use for input file generation (ramdisk recommended).AFL_EARLY_FORKSERVERβ force an early forkserver in anafl-clang-fast/afl-clang-lto/afl-gcc-fasttarget.AFL_PERSISTENTβ enforce persistent mode (if__AFL_LOOPis in a shared lib).AFL_DEFER_FORKSRVβ enforced deferred forkserver (__AFL_INITis in a shared lib).AFL_FUZZER_STATS_UPDATE_INTERVALβ interval to updatefuzzer_statsfile in seconds (default:60, minimum:1).
Build tea β: this copy is compiled with Python 3.14.5 module support, see docs/custom_mutators.md. Itβs compiled without AFL_PERSISTENT_RECORD support. Itβs compiled with shmat support. For additional help please consult docs/README.md :)
π«Ά AUTHOR π«Ά
AFL++ was written by Michal "lcamtuf" Zalewski and is maintained by Marc "van Hauser" Heuse <mh@mh-sec.de>, Dominik Maier <domenukk@gmail.com>, Andrea Fioraldi <andreafioraldi@gmail.com> and Heiko "hexcoder-" Eissfeldt <heiko.eissfeldt@hexco.de>. The homepage of AFL++ is: https://github.com/AFLplusplus/AFLplusplus
π LICENSE π
AFL++ is licensed under AGPL-3.0-or-later, with original components under Apache-2.0; an optional commercial license is available. See https://github.com/AFLplusplus/AFLplusplus/blob/stable/LICENSING.md
Signed with love: AFL++, dated 2026-06-05, section afl-fuzz(8) π
β¨
π¦ where this page comes from
- arch rolling: afl++ 5.00c-1 Β· Apache-2.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms