afl-fuzz(8) System Manager's Manual afl-fuzz(8)

afl-fuzz - موتور فازینگ هدایت‌شده با بازخورد و ابزار دقیق AFL++

afl-fuzz [ گزینه‌ها ] -- /path/to/target_app [ ... ]

پارامترهای الزامی:
  -i dir        - دایرکتوری ورودی حاوی موارد آزمون (یا '-' برای ادامه، همچنین به
                  AFL_AUTORESUME مراجعه کنید)
  -o dir        - دایرکتوری خروجی برای یافته‌های فازر
تنظیمات کنترل اجرا:
  -P strategy   - تعیین راهبرد ثابت جهش: explore (تمرکز بر پوشش جدید)،
                  exploit (تمرکز بر ایجاد فروپاشی/کرش). همچنین می‌توانید تعداد ثانیه‌هایی
                  را تعیین کنید که پس از آن در صورت عدم یافتن مورد جدید به حالت
                  exploit سوییچ کند، و با پوشش جدید برگردد (پیش‌فرض: 1000)
  -p schedule   - زمان‌بندی‌های توان (power schedules) امتیاز کارایی یک سید را محاسبه می‌کنند:
                  explore (پیش‌فرض)، fast، exploit، seek، rare، mmopt، coe، lin
                  quad -- برای اطلاعات بیشتر به docs/FAQ.md مراجعه کنید
  -f file       - مکانی که توسط برنامه تحت فازینگ خوانده می‌شود (پیش‌فرض: stdin یا @@)
  -t msec       - مهلت زمانی برای هر بار اجرا (تنظیم خودکار مقیاس، پیش‌فرض 1000 میلی‌ثانیه). افزودن '+'
                  برای محاسبه خودکار مهلت زمانی، به‌طوری که مقدار داده‌شده حداکثر باشد.
  -m megs       - محدودیت حافظه برای فرآیند فرزند (0 مگابایت، 0 = بدون محدودیت [پیش‌فرض])
  -O            - استفاده از ابزار دقیق فقط باینری (حالت FRIDA)
  -Q            - استفاده از ابزار دقیق فقط باینری (حالت QEMU)
  -U            - استفاده از ابزار دقیق مبتنی بر Unicorn (حالت Unicorn)
  -W            - استفاده از ابزار دقیق مبتنی بر QEMU با Wine (حالت Wine)
  -X            - استفاده از فازینگ مبتنی بر ماشین مجازی (حالت NYX - حالت مستقل)
  -Y            - استفاده از فازینگ مبتنی بر ماشین مجازی (حالت NYX - حالت چندنمونه‌ای)
  -K dir        - استفاده از اسکریپت پایتون برای تعامل با واسط گرافیکی (حالت GUI)
تنظیمات جهش‌دهنده (Mutator):
  -a type       - قالب ورودی هدف، "text" یا "binary" (پیش‌فرض: generic)
  -g minlength  - تنظیم حداقل طول ورودی فاز ایجادشده (پیش‌فرض: 1)
  -G maxlength  - تنظیم حداکثر طول ورودی فاز ایجادشده (پیش‌فرض: 1048576)
  -L minutes    - استفاده از حالت MOpt(imize) و تنظیم محدودیت زمانی برای ورود به
                  حالت ضربان‌ساز (pacemaker) (دقایق بدون یافته‌های جدید). 0 = بلافاصله،
                  -1 = بلافاصله و همراه با جهش عادی.
                  نکته: این گزینه معمولاً چندان کارآمد نیست
  -u            - فعال‌سازی پیوندزدن موارد آزمون (testcase splicing)
  -c program    - فعال‌سازی CmpLog با تعیین یک باینری کامپایل‌شده برای آن.
                  در صورت استفاده از QEMU/FRIDA یا کامپایل شدن برنامه هدف برای CmpLog
                  از '-c 0' استفاده کنید. برای غیرفعال کردن CMPLOG از '-c -' استفاده کنید.
  -l cmplog_opts - مقادیر پیکربندی CmpLog (به عنوان مثال "2ATR"):
                  1=پرونده‌های کوچک، 2=پرونده‌های بزرگ‌تر (پیش‌فرض)، 3=تمام پرونده‌ها،
                  A=حل محاسباتی، T=حل تبدیلی،
                  X=حل تبدیلی شدید، R=بایت‌های رنگ‌آمیزی تصادفی،
                  M=زمان‌بندی دقت (اولویت دادن به مقایسه‌های به‌سختی رد شده)،
                  Z=استخراج مشتق اندازه (کامپایل هدف با AFL_LLVM_BUG_ALLOCSIZE_DERIVE).
تنظیمات رفتار فازینگ:
  -Z             - انتخاب ترتیبی از صف به‌جای انتخاب تصادفی وزن‌دار
  -N             - حذف نکردن (عدم unlink) پرونده ورودی فازینگ (برای دستگاه‌ها و غیره)
  -n             - فازینگ بدون ابزار دقیق (حالت بدون ابزار دقیق / non-instrumented)
  -x dict_file   - فرهنگ‌لغت فازر (به README.md مراجعه کنید، تا ۴ بار قابل تعیین است)
  -w san_binary  - تعیین باینری‌های دارای ابزار دقیق پاک‌کننده (sanitizer) اضافی،
                   می‌تواند چندین بار تعیین شود.
                   برای جزئیات docs/SAND.md را بخوانید.
تنظیمات آزمون:
  -s seed       - استفاده از یک سید (seed) ثابت برای تولیدکننده اعداد تصادفی (RNG)
  -V seconds    - فازینگ برای یک زمان مشخص و سپس خاتمه (فقط زمان فازینگ!)
  -E execs      - فازینگ برای تعداد تقریبی کل اجراها و سپس خاتمه
                  نکته: دقیق نیست و ممکن است چند اجرای بیشتر داشته باشد.
سایر موارد:
  -M/-S id      - حالت توزیع‌شده (-M گزینه -Z را فعال و پیرایش را غیرفعال می‌کند)
                  برای توصیه‌های کارآمد درباره فازینگ موازی، به
                  docs/fuzzing_in_depth.md#c-using-multiple-cores مراجعه کنید.
  -F path       - همگام‌سازی با دایرکتوری صف یک فازر خارجی (نیازمند -M است، تا ۳۲ بار
                  قابل تعیین است)
  -z            - صرف‌نظر از فازینگ قطعی (deterministic) بهبودیافته
                  (توجه داشته باشید که فلگ‌های قدیمی -d و -D نادیده گرفته می‌شوند.)
  -T text       - بنر متنی برای نمایش روی صفحه
  -I command    - اجرای این دستور هنگام یافتن فروپاشی (crash) جدید؛ مسیر پرونده
                  فروپاشی به‌عنوان آرگومان ارسال می‌شود
  -C            - حالت کاوش فروپاشی (حالت peruvian rabbit)
  -b cpu_id     - اتصال (bind) فرآیند فازینگ به هسته پردازنده مشخص‌شده (0-...)
  -e ext        - پسوند پرونده برای پرونده ورودی آزمون فاز (در صورت نیاز)
متغیرهای محیطی مورد استفاده:
LD_BIND_LAZY: تنظیم نکردن متغیر محیطی LD_BIND_NOW برای برنامه هدف
ASAN_OPTIONS: تنظیمات سفارشی برای ASAN
              (باید شامل abort_on_error=1 و symbolize=0 باشد)
MSAN_OPTIONS: تنظیمات سفارشی برای MSAN
              (باید شامل exitcode=86 و symbolize=0 باشد)
AFL_ALLOW_CORES: مجاز دانستن ایجاد پرونده‌های core dump ناشی از فروپاشی هدف
AFL_AUTORESUME: ادامه فازینگ در صورتی که دایرکتوری مشخص‌شده با -o از قبل وجود داشته باشد
AFL_BENCH_JUST_ONE: اجرای برنامه هدف فقط یک بار
AFL_BENCH_UNTIL_CRASH: خروج سریع پس از یافتن اولین ورودی ایجادکننده فروپاشی (crash)
AFL_CMPLOG_ONLY_NEW: اجرا نکردن cmplog روی موارد آزمون اولیه (مناسب برای ادامه‌دهی فازینگ!)
AFL_CRASH_EXITCODE: کد خروج اختیاری فرآیند فرزند که به‌عنوان کرش تفسیر شود
AFL_CUSTOM_MUTATOR_LIBRARY: کتابخانه حاوی afl_custom_fuzz() جهت ایجاد جهش در ورودی‌ها
AFL_CUSTOM_MUTATOR_ONLY: عدم استفاده از جهش‌دهنده‌های داخلی AFL++
AFL_CYCLE_SCHEDULES: پس از اتمام یک چرخه، سوییچ به یک زمان‌بندی -p متفاوت
AFL_DEBUG: خروجی اشکال‌زدایی اضافی برای پیرایش (trimming) در حالت پایتون
AFL_DEBUG_CHILD: عدم سرکوب خروجی stdout/stderr برنامه هدف
AFL_DISABLE_REDUNDANT: غیرفعال‌سازی هر آیتم صف که زائد (redundant) است
AFL_DISABLE_TRIM: غیرفعال‌سازی پیرایش (trimming) موارد آزمون
AFL_DUMB_FORKSRV: استفاده از سرور fork بدون دریافت بازخورد از برنامه هدف
AFL_EXIT_WHEN_DONE: خروج هنگامی که تمام ورودی‌ها اجرا شده و هیچ یافته جدیدی پیدا نشود
AFL_EXIT_ON_TIME: خروج در صورتی که هیچ پوشش جدیدی در مدت‌زمان مشخص‌شده یافت نشود
AFL_EXIT_ON_SEED_ISSUES: خروج در صورت بروز هرگونه مشکل در سیدها
AFL_EXPAND_HAVOC_NOW: فعال‌سازی فوری حالت تخریب گسترده (expand havoc) (پیش‌فرض: پس از ۶۰
                      دقیقه و گذشت یک چرخه بدون یافته جدید)
AFL_FAST_CAL: محدود کردن مرحله کالیبراسیون به سه چرخه جهت افزایش سرعت
AFL_FORCE_UI: اجبار به نمایش صفحه وضعیت (برای کنسول‌های مجازی)
AFL_FORKSRV_INIT_TMOUT: مدت زمان انتظار برای forkserver در حین راه‌اندازی (به میلی‌ثانیه)
AFL_FRAMESHIFT_DISABLE: غیرفعال‌سازی الگوریتم FRAMESHIFT
AFL_HANG_TMOUT: بازنویسی و جایگزینی مقدار مهلت زمانی توقف (به میلی‌ثانیه)
AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES: عدم نمایش هشدار درباره پردازنده‌های core dump
AFL_IGNORE_PROBLEMS: عدم لغو فازینگ در صورت شناسایی پیکربندی یا راه‌اندازی نادرست
AFL_IGNORE_PROBLEMS_COVERAGE: در صورت تنظیم همزمان با AFL_IGNORE_PROBLEMS - نادیده گرفتن
                              آن کتابخانه‌ها برای محاسبه پوشش
AFL_IGNORE_SEED_PROBLEMS: نادیده گرفتن و گذشتن از کرش‌ها و اتمام مهلت‌ها در سیدها به‌جای
                          خروج از برنامه
AFL_IGNORE_TIMEOUTS: عدم پردازش یا ذخیره‌سازی ورودی‌های دچار اتمام مهلت زمانی (timeout)
AFL_IGNORE_UNKNOWN_ENVS: عدم نمایش هشدار درباره متغیرهای محیطی ناشناخته
AFL_IMPORT_FIRST: همگام‌سازی و وارد کردن (import) موارد آزمون از سایر نمونه‌های فازر در ابتدا
AFL_INPUT_LEN_MIN/AFL_INPUT_LEN_MAX: مانند -g/-G تنظیم حداقل/حداکثر طول فاز تولیدشده
AFL_INPUT_PLACEHOLDER: رشته جانگهدار سفارشی برای شناسه‌های پرونده ورودی (پیش‌فرض: @@)
                      استفاده از این گزینه هنگامی که @@ با آرگومان‌های برنامه هدف تداخل دارد
AFL_PIZZA_MODE: 1 - اجبار به حالت پیتزا، -1 - غیرفعال‌سازی برای اول آوریل،
                0 (پیش‌فرض) - فعال‌سازی در روز اول آوریل
AFL_KILL_SIGNAL: شناسه سیگنال ارسالی به فرآیندهای فرزند هنگام اتمام مهلت زمانی و غیره
                 (پیش‌فرض: SIGKILL)
AFL_FORK_SERVER_KILL_SIGNAL: سیگنال قطع (kill) برای fork server هنگام خاتمه
                             (پیش‌فرض: SIGTERM). اگر مقداردهی نشده باشد و AFL_KILL_SIGNAL
                             تنظیم شده باشد، از همان مقدار استفاده می‌شود.
AFL_MAP_SIZE: اندازه حافظه مشترک برای برنامه هدف. باید >= اندازه‌ای باشد
              که برنامه هدف برای آن کامپایل شده است
AFL_MAX_DET_EXTRAS: اگر تعداد ورودی‌های فهرست فرهنگ‌لغت بیشتر از این مقدار باشد،
                    به‌جای استفاده از همه آن‌ها، به‌صورت تصادفی انتخاب می‌شوند.
                    پیش‌فرض: 200.
AFL_NO_AFFINITY: عدم بررسی برای یافتن یک هسته پردازنده بدون استفاده برای فازینگ
AFL_TRY_AFFINITY: تلاش برای اتصال به یک هسته بدون استفاده، بدون خطا در صورت عدم موفقیت
AFL_NO_ARITH: صرف‌نظر از جهش‌های محاسباتی در مرحله قطعی (deterministic)
AFL_NO_AUTODICT: بارگیری نکردن فرهنگ‌لغت خودکار ارائه‌شده که در برنامه هدف کامپایل شده است
AFL_NO_CPU_RED: عدم استفاده از رنگ قرمز برای نمایش مصرف بسیار بالای CPU
AFL_NO_FORKSRV: اجرای برنامه هدف از طریق execve به‌جای استفاده از forkserver
AFL_NO_SNAPSHOT: عدم استفاده از قابلیت تصویر لحظه‌ای (snapshot) (اگر ماژول لود شده باشد)
AFL_NO_STARTUP_CALIBRATION: عدم انجام کالیبراسیون اولیه سید، شروع فوری فازینگ
AFL_NO_WARN_INSTABILITY: عدم نمایش هشدار درباره ناپایداری در کالیبراسیون اولیه
AFL_NO_UI: خاموش کردن صفحه نمایش وضعیت
AFL_NYX_AUX_SIZE: اندازه بافر کمکی Nyx. باید مضربی از 4096 باشد.
                  در صورتی که گزارش‌های کرش ناقص هستند این مقدار را افزایش دهید.
                  مقدار پیش‌فرض 4096 است.
AFL_NYX_DISABLE_SNAPSHOT_MODE: غیرفعال‌سازی حالت اسنپ‌شات (باید توسط ایجنت پشتیبانی شود)
AFL_NYX_LOG: هدایت پیام‌های NYX hprintf به یک پرونده دیگر
AFL_NYX_REUSE_SNAPSHOT: استفاده مجدد از یک اسنپ‌شات ریشه موجود در Nyx
AFL_OLD_CHILD_SYNC: استفاده از همگام‌سازی توصیف‌گر پرونده در حالت پایدار (persistent-mode)
                    به‌جای مسیر پیش‌فرض حافظه مشترک + futex
                    (فقط لینوکس)
AFL_PATH: مسیر باینری‌های پشتیبانی AFL
AFL_PYTHON_MODULE: ایجاد جهش و پیرایش ورودی‌ها با استفاده از ماژول مشخص‌شده پایتون
AFL_QUIET: سرکوب پیام‌های وضعیت forkserver
AFL_POST_PROCESS_KEEP_ORIGINAL: ذخیره پرونده در صف به همان شکل پیش از پس‌پردازش،
                                اما اجرای نسخه پس‌پردازش‌شده
AFL_PRELOAD: تنظیمات LD_PRELOAD / DYLD_INSERT_LIBRARIES برای برنامه هدف
AFL_TARGET_ENV: ارسال متغیرهای محیطی اضافی به برنامه هدف
AFL_SHUFFLE_QUEUE: مرتب‌سازی تصادفی صف ورودی در هنگام راه‌اندازی
AFL_SKIP_BIN_CHECK: صرف‌نظر از بررسی‌های سازگاری afl، همچنین غیرفعال‌سازی اندازه خودکار مپ
AFL_SKIP_CPUFREQ: عدم نمایش هشدار درباره فرکانس متغیر پردازنده
AFL_STATSD: فعال‌سازی جمع‌آوری معیارهای StatsD
AFL_STATSD_HOST: تغییر میزبان پیش‌فرض statsd (پیش‌فرض 127.0.0.1)
AFL_STATSD_PORT: تغییر پورت پیش‌فرض statsd (پیش‌فرض: 8125)
AFL_STATSD_TAGS_FLAVOR: تعیین قالب برچسب‌های statsd (پیش‌فرض: غیرفعال بودن برچسب‌ها)
                        قالب‌های پشتیبانی‌شده: dogstatsd، librato، signalfx، influxdb
AFL_FORCE_FASTRESUME: اجبار به بارگیری پرونده ادامه سریع حتی در صورت تغییر برنامه هدف
AFL_NO_FASTRESUME: عدم خواندن یا نوشتن پرونده ادامه سریع
AFL_NO_SYNC: غیرفعال کردن تمام عملیات همگام‌سازی
AFL_SYNC_TIME: زمان همگام‌سازی بین نمونه‌های فازینگ (به دقیقه)
AFL_FINAL_SYNC: همگام‌سازی نهایی در هنگام خروج (خروج را به تاخیر می‌اندازد!)
AFL_NO_CRASH_README: ایجاد نکردن پرونده README در دایرکتوری کرش‌ها
AFL_TESTCACHE_SIZE: استفاده از حافظه کش برای موارد آزمون، بهبود کارایی (به مگابایت)
AFL_TMPDIR: دایرکتوری مورد استفاده برای ایجاد پرونده‌های ورودی (استفاده از ramdisk توصیه می‌شود)
AFL_EARLY_FORKSERVER: اجبار به اجرای زودهنگام forkserver در اهداف کامپایل‌شده با
                      afl-clang-fast/afl-clang-lto/afl-gcc-fast
AFL_PERSISTENT: اجبار به حالت پایدار (اگر __AFL_LOOP در کتابخانه مشترک باشد)
AFL_DEFER_FORKSRV: اجبار به forkserver به تاخیر افتاده (__AFL_INIT در کتابخانه مشترک باشد)
AFL_FUZZER_STATS_UPDATE_INTERVAL: بازه زمانی به‌روزرسانی پرونده fuzzer_stats به
                                  ثانیه (پیش‌فرض: 60، حداقل: 1)
کامپایل‌شده با پشتیبانی از ماژول Python 3.14.5، به docs/custom_mutators.md مراجعه کنید
کامپایل‌شده بدون پشتیبانی از AFL_PERSISTENT_RECORD.
کامپایل‌شده با پشتیبانی از shmat.
برای راهنمایی بیشتر لطفاً به docs/README.md مراجعه کنید :)

پروژه AFL++ توسط Michal "lcamtuf" Zalewski نوشته شده است و توسط Marc "van Hauser" Heuse <mh@mh-sec.de>، Dominik Maier <domenukk@gmail.com>، Andrea Fioraldi <andreafioraldi@gmail.com> و Heiko "hexcoder-" Eissfeldt <heiko.eissfeldt@hexco.de> نگهداری می‌شود. صفحه خانگی AFL++ در نشانی زیر در دسترس است: https://github.com/AFLplusplus/AFLplusplus

پروژه AFL++ تحت مجوز AGPL-3.0-or-later منتشر شده است، همراه با بخش‌های اصلی تحت Apache-2.0؛ یک مجوز تجاری اختیاری نیز در دسترس است. مشاهده کنید: https://github.com/AFLplusplus/AFLplusplus/blob/stable/LICENSING.md

2026-06-05 AFL++