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

afl-showmap - نمایش داده‌های تاپل خام و نقشه پوشش کد ضبط‌شده توسط AFL++

afl-showmap [ options ] -- /path/to/target_app [ ... ]

پارامترهای الزامی:
  -o file     - پرونده‌ای که داده‌های ردیابی (trace) در آن نوشته می‌شود (با -S الزامی نیست)
تنظیمات کنترل اجرا:
  -t msec     - مهلت زمانی برای هر بار اجرا (پیش‌فرض: 1000ms)
  -m megs     - محدودیت حافظه برای فرآیند فرزند (پیش‌فرض: none)
  -O          - استفاده از ابزار دقیق فقط باینری (حالت FRIDA)
  -Q          - استفاده از ابزار دقیق فقط باینری (حالت QEMU)
  -U          - استفاده از ابزار دقیق مبتنی بر Unicorn (حالت Unicorn)
  -W          - استفاده از ابزار دقیق مبتنی بر QEMU با Wine (حالت Wine)
                (ضروری نیست، صرفاً برای سازگاری با سایر ابزارهای *afl است)
  -X          - استفاده از حالت Nyx
سایر تنظیمات:
  -f file     - پرونده ورودی خوانده‌شده توسط برنامه تحت آزمون
  -S          - حالت جریانی (streaming): خواندن ورودی‌های آزمون از stdin، نوشتن پوشش
                در stdout با استفاده از پروتکل طول-مقدار (length-value). امکان استفاده از
                afl-showmap را به‌عنوان یک پروکسی پوشش جهت بهره‌گیری از forkserver
                مربوط به AFL++ بدون نیاز به پیاده‌سازی آن فراهم می‌کند.
                پروتکل: ورودی   [u32 len][data]
                        خروجی  [u16 status][u32 edges][(u32,u8)*]
                               [u32 stdout_len][stdout_data*]
                               [u32 stderr_len][stderr_data*]
                وضعیت: بیت‌های [0:1] = خروج (0=ok، 1=timeout، 2=crash)،
                       بیت‌های [2:7] = رزرو شده (0)،
                       بیت‌های [8:15] = کد خروج (ok) یا سیگنال (crash)
                نکته: در حال حاضر stdout_len/stderr_len همیشه 0 هستند
                      (ضبط خروجی هنوز پیاده‌سازی نشده است)
  -i dir      - پردازش تمام پرونده‌های درون این دایرکتوری، باید با -o ترکیب شود.
                همراه با -C، مقدار -o یک پرونده است، بدون -C باید یک دایرکتوری باشد
                و هر بیت‌مپ به‌صورت جداگانه در آن نوشته خواهد شد.
  -I filelist - به‌عنوان جایگزینی برای -i، یک فهرست از پرونده‌ها است
  -C          - جمع‌آوری پوشش، نوشتن تمام لبه‌ها (edges) در -o و ارائه یک خلاصه
                باید همراه با -i استفاده شود.
  -q          - فرونشاندن خروجی برنامه و عدم نمایش پیام‌ها
  -e          - صرفاً نمایش پوشش لبه‌ها، نادیده گرفتن تعداد دفعات برخورد (hit counts)
  -r          - نمایش مقادیر واقعی تاپل به‌جای مقادیر فیلترشده AFL
  -s          - طبقه‌بندی نکردن نقشه (map)
  -c          - مجاز دانستن ایجاد core dump
این ابزار داده‌های تاپل خام ضبط‌شده توسط ابزار دقیق AFL را نمایش می‌دهد.
برای راهنمایی بیشتر، به docs/README.md مراجعه کنید.
اگر از حالت -i/-I استفاده کنید، قابلیت سفارشی mutator post_process send
پشتیبانی می‌شود.
متغیرهای محیطی مورد استفاده:
LD_BIND_LAZY: تنظیم نکردن متغیر محیطی LD_BIND_NOW برای برنامه هدف
AFL_CMIN_CRASHES_ONLY: (در حالت cmin_mode) فقط نوشتن تاپل‌ها برای ورودی‌های منجر به کرش
AFL_CMIN_ALLOW_ANY: (در حالت cmin_mode) نوشتن تاپل‌ها برای ورودی‌های کرش و اتمام مهلت زمانی
AFL_CRASH_EXITCODE: کد خروج اختیاری فرآیند فرزند برای تفسیر به‌عنوان کرش
AFL_DEBUG: فعال‌سازی خروجی‌های اضافی توسعه‌دهنده
AFL_FORKSRV_INIT_TMOUT: زمان انتظار برای forkserver در حین راه‌اندازی (به میلی‌ثانیه)
AFL_KILL_SIGNAL: شناسه سیگنال ارسالی به فرآیندهای فرزند هنگام اتمام مهلت زمانی و غیره
                 (پیش‌فرض: SIGKILL)
AFL_FORK_SERVER_KILL_SIGNAL: سیگنال قطع (kill) برای fork server هنگام خاتمه
                             (پیش‌فرض: SIGTERM). اگر مقداردهی نشده باشد و AFL_KILL_SIGNAL
                             تنظیم شده باشد، از همان مقدار استفاده می‌شود.
AFL_MAP_SIZE: اندازه حافظه مشترک برای برنامه هدف. باید >= اندازه‌ای باشد که
              برنامه هدف برای آن کامپایل شده است
AFL_PRELOAD: تنظیمات LD_PRELOAD / DYLD_INSERT_LIBRARIES برای برنامه هدف
AFL_INPUT_PLACEHOLDER: جانگهدار سفارشی برای پرونده ورودی (پیش‌فرض: @@)
AFL_PRINT_FILENAMES: چاپ مدخل صفی که در حال حاضر پردازش می‌شود در stdout
AFL_QUIET: عدم چاپ خروجی‌های اطلاعاتی اضافی
AFL_NO_FORKSRV: اجرای برنامه هدف از طریق execve به‌جای استفاده از forkserver

پروژه 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++