| afl-fuzz(8) | System Manager's Manual | afl-fuzz(8) |
نام (NAME)
afl-fuzz - موتور فازینگ هدایتشده با بازخورد و ابزار دقیق AFL++
خلاصه دستور (SYNOPSIS)
afl-fuzz [ گزینهها ] -- /path/to/target_app [ ... ]
گزینهها (OPTIONS)
پارامترهای الزامی:
-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 مراجعه کنید :)
نویسندگان (AUTHORS)
پروژه 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
مجوز (LICENSE)
پروژه AFL++ تحت مجوز AGPL-3.0-or-later منتشر شده است، همراه با بخشهای اصلی تحت Apache-2.0؛ یک مجوز تجاری اختیاری نیز در دسترس است. مشاهده کنید: https://github.com/AFLplusplus/AFLplusplus/blob/stable/LICENSING.md
| 2026-06-05 | AFL++ |