'\" t .\" Title: scanelf .\" Author: Ned Ludd .\" Generator: DocBook XSL Stylesheets vsnapshot .\" Date: 08/02/2026 .\" Manual: Documentation for pax-utils .\" Source: pax-utils 1.3.11 .\" Language: English .\" .TH "SCANELF" "1" "08/02/2026" "pax\-utils 1.3.11" "Documentation for pax-utils" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "نام (NAME)" scanelf \- ابزار فضای کاربری برای پویش فایل‌های ELF .SH "خلاصه دستور (SYNOPSIS)" .HP \w'\fBscanelf\fR\ 'u \fBscanelf\fR [\fIگزینه‌ها\fR] \fIELFs\fR\ یا\ \fIدایرکتوری‌ها\fR .SH "توضیحات (DESCRIPTION)" .PP \fBscanelf\fR یک ابزار فضای کاربری (user-space) برای پویش سریع فایل‌های مشخص‌شده ELF، دایرکتوری‌ها یا مسیرهای رایج سیستم به منظور استخراج اطلاعات گوناگون است\&. این اطلاعات می‌تواند شامل انواع ELF، نشانه‌گذاری‌های PaX، مقادیر TEXTREL و غیره باشد\&. .SH "گزینه‌ها (OPTIONS)" .PP \fB\-A\fR, \fB\-\-archives\fR .RS 4 پویش آرشیوها (فایل‌های a.\&) .RE .PP \fB\-a\fR, \fB\-\-all\fR .RS 4 چاپ تمام اطلاعات مفید و ساده .RE .PP \fB\-B\fR, \fB\-\-nobanner\fR .RS 4 عدم نمایش سرآیند (header) .RE .PP \fB\-b\fR, \fB\-\-bind\fR .RS 4 چاپ اطلاعات اتصال نمادها (lazy یا now) .RE .PP \fB\-D\fR, \fB\-\-endian\fR .RS 4 چاپ اندیاننس ELF (big/little/\&.\&.\&.) .RE .PP \fB\-E\fR, \fB\-\-etype\fR \fIETYPE\fR .RS 4 چاپ صرفاً فایل‌های ELF منطبق با etype مشخص‌شده (مانند ET_DYN، ET_EXEC و غیره) .RE .PP \fB\-e\fR, \fB\-\-header\fR .RS 4 چاپ نشانه‌گذاری‌های GNU_STACK .RE .PP \fB\-F\fR, \fB\-\-format\fR \fIFORMAT\fR .RS 4 استفاده از قالب مشخص‌شده برای خروجی؛ برای اطلاعات بیشتر بخش \fBقالب (FORMAT)\fR را ببینید .RE .PP \fB\-f\fR, \fB\-\-from\fR \fIFILE\fR .RS 4 خواندن جریان ورودی از نام فایل مشخص‌شده .RE .PP \fB\-g\fR, \fB\-\-gmatch\fR .RS 4 استفاده از strncmp برای تطبیق کتابخانه‌ها (همراه با \fB\-N\fR)\&. یا استفاده از عبارت منظم برای تطبیق نماد .RE .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 نمایش خلاصه نحوه استفاده و خروج .RE .PP \fB\-I\fR, \fB\-\-osabi\fR .RS 4 چاپ OSABI .RE .PP \fB\-i\fR, \fB\-\-interp\fR .RS 4 چاپ اطلاعات مفسر (\&.interp/PT_INTERP) .RE .PP \fB\-k\fR, \fB\-\-section\fR \fISECTION\fR .RS 4 یافتن ELFهای دارای بخش مشخص‌شده\&. می‌تواند چندین بار برای تطبیق همزمان چند بخش مشخص شود\&. برای اطلاعات بیشتر بخش \fBتطبیق بخش‌ها (SECTION MATCHING)\fR را ببینید\&. .RE .PP \fB\-L\fR, \fB\-\-ldcache\fR .RS 4 استفاده از اطلاعات ld\&.so\&.cache (همراه با \fB\-r\fR/\fB\-n\fR) .RE .PP \fB\-l\fR, \fB\-\-ldpath\fR .RS 4 پویش تمام دایرکتوری‌های موجود در /etc/ld\&.so\&.conf .RE .PP \fB\-M\fR, \fB\-\-bits\fR \fIBITS\fR .RS 4 چاپ صرفاً فایل‌های ELF منطبق با بیت‌های عددی مشخص‌شده (مانند 32/64) .RE .PP \fB\-m\fR, \fB\-\-mount\fR .RS 4 عدم عبور بازگشتی از نقاط اتصال (mount points) .RE .PP \fB\-N\fR, \fB\-\-lib\fR \fISONAME\fR .RS 4 یافتن ELFهایی که به SONAME مشخص‌شده نیاز دارند\&. می‌تواند چندین بار برای تطبیق همزمان چند SONAME مشخص شود\&. برای اطلاعات بیشتر بخش \fBتطبیق SONAME مورد نیاز (NEEDED SONAME MATCHING)\fR را ببینید\&. .RE .PP \fB\-n\fR, \fB\-\-needed\fR .RS 4 چاپ کتابخانه‌هایی که ELF به آن‌ها پیوند خورده است (DT_NEEDED) .RE .PP \fB\-O\fR, \fB\-\-perms\fR \fIPERMS\fR .RS 4 چاپ صرفاً فایل‌های ELF با بیت‌های اکتال مشخص‌شده منطبق (مانند 755) .RE .PP \fB\-o\fR, \fB\-\-file\fR \fIFILE\fR .RS 4 نوشتن جریان خروجی در نام فایل مشخص‌شده .RE .PP \fB\-p\fR, \fB\-\-path\fR .RS 4 پویش تمام دایرکتوری‌های موجود در متغیر محیطی PATH .RE .PP \fB\-q\fR, \fB\-\-quiet\fR .RS 4 فقط خروجی دادن موارد «بد» (bad) .RE .PP \fB\-R\fR, \fB\-\-recursive\fR .RS 4 پویش بازگشتی دایرکتوری‌ها .RE .PP \fB\-r\fR, \fB\-\-rpath\fR .RS 4 چاپ مسیرهای زمان اجرا که در ELF کدگذاری شده‌اند (DT_RPATH/DT_RUNPATH) .RE .PP \fB\-S\fR, \fB\-\-soname\fR .RS 4 چاپ نام کتابخانه اشتراکی ELF (DT_SONAME) .RE .PP \fB\-s\fR, \fB\-\-symbol\fR \fISYMBOL\fR .RS 4 یافتن نماد مشخص‌شده؛ برای اطلاعات بیشتر بخش \fBتطبیق نمادها (SYMBOL MATCHING)\fR را ببینید .RE .PP \fB\-T\fR, \fB\-\-textrels\fR .RS 4 مکان‌یابی علت TEXTRELها از طریق objdump .RE .PP \fB\-t\fR, \fB\-\-textrel\fR .RS 4 چاپ اطلاعات TEXTREL .RE .PP \fB\-V\fR, \fB\-\-version\fR .RS 4 چاپ نگارش و خروج .RE .PP \fB\-v\fR, \fB\-\-verbose\fR .RS 4 پرگویی در خروجی (می‌تواند بیش از یک بار استفاده شود) .RE .PP \fB\-X\fR, \fB\-\-fix\fR .RS 4 تلاش برای «ترمیم» موارد بد (استفاده همراه با \fB\-r\fR/\fB\-e\fR) .RE .PP \fB\-x\fR, \fB\-\-pax\fR .RS 4 چاپ نشانه‌گذاری‌های PaX .RE .PP \fB\-Y\fR, \fB\-\-eabi\fR .RS 4 چاپ EABI (تنها برای چند معماری محدود اهمیت دارد) .RE .PP \fB\-y\fR, \fB\-\-symlink\fR .RS 4 عدم پویش پیوندهای نمادین (symlinks) .RE .PP \fB\-Z\fR, \fB\-\-size\fR \fISIZE\fR .RS 4 چاپ اندازه فایل ELF .RE .PP \fB\-z\fR, \fB\-\-setpax\fR \fIFLAGS\fR .RS 4 تنظیم EI_PAX/PT_PAX_FLAGS روی فلگ‌های مشخص‌شده (استفاده همراه با \fB\-Xx\fR) .RE .PP \fB\-\-use\-ldpath\fR .RS 4 استفاده از مسیرهای ld\&.so\&.conf برای یافتن مسیر کامل کتابخانه‌ها (همراه با \-\-needed استفاده شود)\&. .RE .PP \fB\-\-root\fR \fIPATH\fR .RS 4 جستجو در درخت ریشه مشخص‌شده به‌جای /\&. معمولاً با گزینه‌هایی مانند \-l یا \-p همراه می‌شود\&. این گزینه به‌طور ضمنی با تمام مسیرهای مشخص‌شده در خط فرمان به عنوان مسیرهای نسبی نسبت به ریشه برخورد می‌کند، بنابراین اگر صریحاً ELFها را فهرست می‌کنید، حتماً آن را نادیده بگیرید\&. .RE .PP \fB\-\-ldcache\fR \fIPATH\fR .RS 4 استفاده از مسیر مشخص‌شده به‌جای /etc/ld\&.so\&.cache\&. معمولاً با گزینه‌هایی مانند \-L یا \-n همراه می‌شود\&. .RE .SH "قالب (FORMAT)" .PP رشته قالب بسیار شبیه به یک رشته در printf است از این جهت که یک رشته متنی با فلگ‌هایی است که اطلاعات متفاوتی را درخواست می‌کنند\&. برای نمونه، می‌توانید از یک رشته قالب استفاده کنید و انتظار نتایج زیر را داشته باشید\&. .sp .if n \{\ .RS 4 .\} .nf # \fBscanelf\fR \fB\-BF\fR "file %f needs %n; funky time" /bin/bash file bash needs libncurses\&.so\&.5,libdl\&.so\&.2,libc\&.so\&.6; funky time .fi .if n \{\ .RE .\} .PP توجه داشته باشید که هنگام استفاده از یک رشته قالب، به‌طور کلی فلگ‌های مرتبط با اطلاعات باید حذف شوند\&. به بیان دیگر، نمی‌توانید هم خروجی NEEDED (\fB\-n\fR) را درخواست کنید و هم همزمان یک قالب خروجی مشخص نمایید، چرا که این عملیات‌ها مانعة‌الجمع هستند\&. هر فلگ مرتبط با اطلاعات دارای یک مشخص‌کننده تبدیل معادل است، بنابراین به‌جای آن‌ها از مشخص‌کننده‌ها استفاده کنید\&. البته می‌توانید همچنان به استفاده از فلگ‌های غیرمرتبط با اطلاعات (مانند \fB\-\-verbose\fR) ادامه دهید\&. .PP سه نویسه وجود دارند که مشخص‌کننده‌های تبدیل را معرفی می‌کنند\&: .PP \(bu \fB%\fR \- جایگزینی با اطلاعات .sp -1 .TP 2 \(bu \fB#\fR \- تطبیق بولی خاموش (بدون خروجی) .sp -1 .TP 2 \(bu \fB+\fR \- تطبیق همراه با جزئیات (verbose) .PP و تعدادی مشخص‌کننده تبدیل وجود دارد\&. ما تلاش می‌کنیم مشخص‌کننده را با گزینه متناظر تطبیق دهیم\&. .PP \(bu \fBa\fR \- نوع ماشین (EM) .sp -1 .TP 2 \(bu \fBb\fR \- فلگ‌های پیوند (bind) .sp -1 .TP 2 \(bu \fBe\fR \- سرآیندهای برنامه (program headers) .sp -1 .TP 2 \(bu \fBD\fR \- ترتیب بایت‌ها (endian) .sp -1 .TP 2 \(bu \fBI\fR \- osabi .sp -1 .TP 2 \(bu \fBY\fR \- eabi .sp -1 .TP 2 \(bu \fBF\fR \- نام کامل فایل (مسیر طولانی) .sp -1 .TP 2 \(bu \fBf\fR \- نام کوتاه فایل .sp -1 .TP 2 \(bu \fBi\fR \- مفسر (interp) .sp -1 .TP 2 \(bu \fBk\fR \- بخش (section) .sp -1 .TP 2 \(bu \fBM\fR \- کلاس EI .sp -1 .TP 2 \(bu \fBN\fR \- needed مشخص‌شده .sp -1 .TP 2 \(bu \fBn\fR \- کتابخانه‌های مورد نیاز (needed) .sp -1 .TP 2 \(bu \fBp\fR \- نام فایل (بدون بخش جستجو) .sp -1 .TP 2 \(bu \fBo\fR \- نوع شیء (etype) .sp -1 .TP 2 \(bu \fBO\fR \- مجوزها (perms) .sp -1 .TP 2 \(bu \fBr\fR \- مسیرهای اجرا (runpaths) .sp -1 .TP 2 \(bu \fBS\fR \- SONAME .sp -1 .TP 2 \(bu \fBs\fR \- نماد (symbol) .sp -1 .TP 2 \(bu \fBT\fR \- تمامی textrelها .sp -1 .TP 2 \(bu \fBt\fR \- وضعیت textrel .sp -1 .TP 2 \(bu \fBx\fR \- فلگ‌های pax .sp .SH "تطبیق نمادها (SYMBOL MATCHING)" .PP رشته مشخص‌شده قالبی به صورت \fB[%[modifiers]%][[+\-]][,[\&.\&.\&.\&.\&.]]\fR\& دارد\&. .PP اگر \fBsymbol name\fR خالی باشد، تمام نمادها مطابقت داده می‌شوند\&. .PP اگر \fBsymbol name\fR یک الگوی glob ("\fB*\fR") باشد، تمام نمادها در قالب اشکال‌زدایی (debug) تخلیه می‌شوند\&. به ساختار این خروجی وابسته نباشید چرا که هر زمان لازم باشد تغییر می‌کند\&. .PP اگر نخستین کاراکتر نام نماد یک علامت مثبت ("\fB+\fR") باشد، فقط نمادهای تعریف‌شده (defined) تطبیق داده می‌شوند\&. اگر منفی ("\fB\-\fR") باشد، تنها نمادهای تعریف‌نشده (undefined) تطبیق داده می‌شوند\&. منظور از «تعریف‌شده» این است که نماد در خود فایل ELF تعریف شده است، در مقابل داشتن یک ارجاع خارجی\&. .PP قرار دادن اصلاح‌کننده‌ها میان علامت‌های درصد ("\fB%\fR") امکان فیلترهای دقیق‌تر و عمیق‌تر را فراهم می‌سازد\&. گروه‌هایی از اصلاح‌کننده‌ها وجود دارند\&. اگر عضوی از یک گروه را مشخص نکنید، تمام انواع موجود در آن گروه مطابقت داده می‌شوند\&. .PP \(bu \fBگروه STT\fR (نوع نماد) .sp -1 .TP 2 \(bu \fBn\fR \- STT_NOTYPE .sp -1 .TP 2 \(bu \fBo\fR \- STT_OBJECT .sp -1 .TP 2 \(bu \fBf\fR \- STT_FUNC .sp -1 .TP 2 \(bu \fBF\fR \- STT_FILE .sp -1 .TP 2 \(bu \fBگروه STB\fR (اتصال نماد) .sp -1 .TP 2 \(bu \fBl\fR \- STB_LOCAL .sp -1 .TP 2 \(bu \fBg\fR \- STB_GLOBAL .sp -1 .TP 2 \(bu \fBw\fR \- STB_WEAK .sp -1 .TP 2 \(bu \fBگروه STV\fR (دید نماد) .sp -1 .TP 2 \(bu \fBp\fR \- STV_DEFAULT .sp -1 .TP 2 \(bu \fBi\fR \- STV_INTERNAL .sp -1 .TP 2 \(bu \fBh\fR \- STV_HIDDEN .sp -1 .TP 2 \(bu \fBP\fR \- STV_PROTECTED .sp -1 .TP 2 \(bu \fBگروه SHN\fR (سرآیند بخش) .sp -1 .TP 2 \(bu \fBd\fR \- تعریف‌شده .sp -1 .TP 2 \(bu \fBu\fR \- SHN_UNDEF .sp -1 .TP 2 \(bu \fBa\fR \- SHN_ABS .sp -1 .TP 2 \(bu \fBc\fR \- SHN_COMMON .PP می‌توانید با استفاده از ویرگول ("\fB,\fR") برای جداسازی جستجوهای گوناگون، چندین نماد را همزمان جستجو کنید\&. هر نمادی که منطبق باشد نمایش داده می‌شود، در حالی که نمادهای نامنطبق نشان داده نخواهند شد\&. .SH "انواع ELF (ELF ETYPES)" .PP می‌توانید با مشخص کردن نوع فایل شیء ELF (به صورت ETYPE) جستجوی خود را محدود نمایید\&. این گزینه خط فرمان مقدار عددی و یا نوع نمادین را می‌پذیرد\&. چندین مقدار می‌توانند با کاما جدا شده و ارسال گردند\&. مثال: \-E ET_EXEC,ET_DYN,1 .PP در اینجا فهرست استاندارد موجود آورده شده است\&. البته شما آزادید هر مقدار عددی که می‌خواهید را مشخص کنید\&. .PP \(bu \fB0 \- ET_NONE\fR \- نوع ناشناخته .sp -1 .TP 2 \(bu \fB1 \- ET_REL\fR \- فایل قابل بازنشانی .sp -1 .TP 2 \(bu \fB2 \- ET_EXEC\fR \- فایل اجرایی .sp -1 .TP 2 \(bu \fB3 \- ET_DYN\fR \- شیء اشتراکی (shared object) .sp -1 .TP 2 \(bu \fB4 \- ET_CORE\fR \- فایل هسته (core) .sp .SH "بیت‌های ELF (ELF BITS)" .PP همچنین می‌توانید با مشخص کردن اندازه بیتی ELF جستجوی خود را محدود کنید\&. مجدداً، مقدار عددی یا شناسه نمادین را مشخص نمایید\&. .PP \(bu \fB32 \- ELFCLASS32\fR \- فایل‌های ELF ۳۲ بیتی .sp -1 .TP 2 \(bu \fB64 \- ELFCLASS64\fR \- فایل‌های ELF ۶۴ بیتی .sp .SH "تطبیق بخش‌ها (SECTION MATCHING)" .PP پیشوند \fB!\fR تنها ELFهایی را نشان می‌دهد که بخش مشخص‌شده را ندارند\&. .SH "تطبیق SONAME مورد نیاز (NEEDED SONAME MATCHING)" .PP پیشوند \fB!\fR تنها ELFهایی را نشان می‌دهد که به کتابخانه مشخص‌شده وابسته نیستند\&. .SH "وب‌گاه (HOMEPAGE)" .PP \m[blue]\fBhttps://wiki\&.gentoo\&.org/wiki/Hardened/PaX_Utilities\fR\m[] .SH "گزارش باگ‌ها (REPORTING BUGS)" .PP لطفاً تا حد امکان اطلاعات کامل (با استفاده از هرگونه گزینه اشکال‌زدایی موجود) را درج نموده و گزارش‌های باگ را برای نگه‌دارندگان ارسال کنید (بخش \fBنویسندگان (AUTHORS)\fR را ببینید)\&. در صورت امکان لطفاً از Gentoo bugzilla در نشانی \m[blue]\fBhttps://bugs\&.gentoo\&.org\fR\m[] استفاده فرمایید\&. .SH "همچنین ببینید (SEE ALSO)" .PP \fBchpax\fR(1), \fBdumpelf\fR(1), \fBpaxctl\fR(1), \fBpspax\fR(1), \fBreadelf\fR(1), \fBscanelf\fR(1), \fBelf\fR(5) .SH "نویسندگان (AUTHORS)" .PP \fBNed Ludd\fR <\&solar@gentoo.org\&> .RS 4 نگه‌دارنده .RE .PP \fBMike Frysinger\fR <\&vapier@gentoo.org\&> .RS 4 نگه‌دارنده .RE .PP \fBFabian Groffen\fR <\&grobian@gentoo.org\&> .RS 4 نگه‌دارنده Mach-O .RE .SH "نکات (NOTES)" .IP " 1." 4 https://wiki.gentoo.org/wiki/Hardened/PaX_Utilities .IP " 2." 4 https://bugs.gentoo.org