| afl-showmap(8) | System Manager's Manual | afl-showmap(8) |
نام (NAME)
afl-showmap - نمایش دادههای تاپل خام و نقشه پوشش کد ضبطشده توسط AFL++
خلاصه دستور (SYNOPSIS)
afl-showmap [ options ] -- /path/to/target_app [ ... ]
گزینهها (OPTIONS)
پارامترهای الزامی:
-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
نویسندگان (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++ |