| SCANELF(1) | Documentation for pax-utils | SCANELF(1) |
نام (NAME)
scanelf - ابزار فضای کاربری برای پویش فایلهای ELF
خلاصه دستور (SYNOPSIS)
scanelf [گزینهها] ELFs یا دایرکتوریها
توضیحات (DESCRIPTION)
scanelf یک ابزار فضای کاربری (user-space) برای پویش سریع فایلهای مشخصشده ELF، دایرکتوریها یا مسیرهای رایج سیستم به منظور استخراج اطلاعات گوناگون است. این اطلاعات میتواند شامل انواع ELF، نشانهگذاریهای PaX، مقادیر TEXTREL و غیره باشد.
گزینهها (OPTIONS)
-A, --archives
-a, --all
-B, --nobanner
-b, --bind
-D, --endian
-E, --etype ETYPE
-e, --header
-F, --format FORMAT
-f, --from FILE
-g, --gmatch
-h, --help
-I, --osabi
-i, --interp
-k, --section SECTION
-L, --ldcache
-l, --ldpath
-M, --bits BITS
-m, --mount
-N, --lib SONAME
-n, --needed
-O, --perms PERMS
-o, --file FILE
-p, --path
-q, --quiet
-R, --recursive
-r, --rpath
-S, --soname
-s, --symbol SYMBOL
-T, --textrels
-t, --textrel
-V, --version
-v, --verbose
-X, --fix
-x, --pax
-Y, --eabi
-y, --symlink
-Z, --size SIZE
-z, --setpax FLAGS
--use-ldpath
--root PATH
--ldcache PATH
قالب (FORMAT)
رشته قالب بسیار شبیه به یک رشته در printf است از این جهت که یک رشته متنی با فلگهایی است که اطلاعات متفاوتی را درخواست میکنند. برای نمونه، میتوانید از یک رشته قالب استفاده کنید و انتظار نتایج زیر را داشته باشید.
# scanelf -BF "file %f needs %n; funky time" /bin/bash file bash needs libncurses.so.5,libdl.so.2,libc.so.6; funky time
توجه داشته باشید که هنگام استفاده از یک رشته قالب، بهطور کلی فلگهای مرتبط با اطلاعات باید حذف شوند. به بیان دیگر، نمیتوانید هم خروجی NEEDED (-n) را درخواست کنید و هم همزمان یک قالب خروجی مشخص نمایید، چرا که این عملیاتها مانعةالجمع هستند. هر فلگ مرتبط با اطلاعات دارای یک مشخصکننده تبدیل معادل است، بنابراین بهجای آنها از مشخصکنندهها استفاده کنید. البته میتوانید همچنان به استفاده از فلگهای غیرمرتبط با اطلاعات (مانند --verbose) ادامه دهید.
سه نویسه وجود دارند که مشخصکنندههای تبدیل را معرفی میکنند:
• % - جایگزینی با اطلاعات
- •
- # - تطبیق بولی خاموش (بدون خروجی)
- •
- + - تطبیق همراه با جزئیات (verbose)
و تعدادی مشخصکننده تبدیل وجود دارد. ما تلاش میکنیم مشخصکننده را با گزینه متناظر تطبیق دهیم.
• a - نوع ماشین (EM)
- •
- b - فلگهای پیوند (bind)
- •
- e - سرآیندهای برنامه (program headers)
- •
- D - ترتیب بایتها (endian)
- •
- I - osabi
- •
- Y - eabi
- •
- F - نام کامل فایل (مسیر طولانی)
- •
- f - نام کوتاه فایل
- •
- i - مفسر (interp)
- •
- k - بخش (section)
- •
- M - کلاس EI
- •
- N - needed مشخصشده
- •
- n - کتابخانههای مورد نیاز (needed)
- •
- p - نام فایل (بدون بخش جستجو)
- •
- o - نوع شیء (etype)
- •
- O - مجوزها (perms)
- •
- r - مسیرهای اجرا (runpaths)
- •
- S - SONAME
- •
- s - نماد (symbol)
- •
- T - تمامی textrelها
- •
- t - وضعیت textrel
- •
- x - فلگهای pax
تطبیق نمادها (SYMBOL MATCHING)
رشته مشخصشده قالبی به صورت [%[modifiers]%][[+-]<symbol name>][,[.....]] دارد.
اگر symbol name خالی باشد، تمام نمادها مطابقت داده میشوند.
اگر symbol name یک الگوی glob ("*") باشد، تمام نمادها در قالب اشکالزدایی (debug) تخلیه میشوند. به ساختار این خروجی وابسته نباشید چرا که هر زمان لازم باشد تغییر میکند.
اگر نخستین کاراکتر نام نماد یک علامت مثبت ("+") باشد، فقط نمادهای تعریفشده (defined) تطبیق داده میشوند. اگر منفی ("-") باشد، تنها نمادهای تعریفنشده (undefined) تطبیق داده میشوند. منظور از «تعریفشده» این است که نماد در خود فایل ELF تعریف شده است، در مقابل داشتن یک ارجاع خارجی.
قرار دادن اصلاحکنندهها میان علامتهای درصد ("%") امکان فیلترهای دقیقتر و عمیقتر را فراهم میسازد. گروههایی از اصلاحکنندهها وجود دارند. اگر عضوی از یک گروه را مشخص نکنید، تمام انواع موجود در آن گروه مطابقت داده میشوند.
• گروه STT (نوع نماد)
- •
- n - STT_NOTYPE
- •
- o - STT_OBJECT
- •
- f - STT_FUNC
- •
- F - STT_FILE
- •
- گروه STB (اتصال نماد)
- •
- l - STB_LOCAL
- •
- g - STB_GLOBAL
- •
- w - STB_WEAK
- •
- گروه STV (دید نماد)
- •
- p - STV_DEFAULT
- •
- i - STV_INTERNAL
- •
- h - STV_HIDDEN
- •
- P - STV_PROTECTED
- •
- گروه SHN (سرآیند بخش)
- •
- d - تعریفشده
- •
- u - SHN_UNDEF
- •
- a - SHN_ABS
- •
- c - SHN_COMMON
میتوانید با استفاده از ویرگول (",") برای جداسازی جستجوهای گوناگون، چندین نماد را همزمان جستجو کنید. هر نمادی که منطبق باشد نمایش داده میشود، در حالی که نمادهای نامنطبق نشان داده نخواهند شد.
انواع ELF (ELF ETYPES)
میتوانید با مشخص کردن نوع فایل شیء ELF (به صورت ETYPE) جستجوی خود را محدود نمایید. این گزینه خط فرمان مقدار عددی و یا نوع نمادین را میپذیرد. چندین مقدار میتوانند با کاما جدا شده و ارسال گردند. مثال: -E ET_EXEC,ET_DYN,1
در اینجا فهرست استاندارد موجود آورده شده است. البته شما آزادید هر مقدار عددی که میخواهید را مشخص کنید.
• 0 - ET_NONE - نوع ناشناخته
- •
- 1 - ET_REL - فایل قابل بازنشانی
- •
- 2 - ET_EXEC - فایل اجرایی
- •
- 3 - ET_DYN - شیء اشتراکی (shared object)
- •
- 4 - ET_CORE - فایل هسته (core)
بیتهای ELF (ELF BITS)
همچنین میتوانید با مشخص کردن اندازه بیتی ELF جستجوی خود را محدود کنید. مجدداً، مقدار عددی یا شناسه نمادین را مشخص نمایید.
• 32 - ELFCLASS32 - فایلهای ELF ۳۲ بیتی
- •
- 64 - ELFCLASS64 - فایلهای ELF ۶۴ بیتی
تطبیق بخشها (SECTION MATCHING)
پیشوند ! تنها ELFهایی را نشان میدهد که بخش مشخصشده را ندارند.
تطبیق SONAME مورد نیاز (NEEDED SONAME MATCHING)
پیشوند ! تنها ELFهایی را نشان میدهد که به کتابخانه مشخصشده وابسته نیستند.
وبگاه (HOMEPAGE)
گزارش باگها (REPORTING BUGS)
لطفاً تا حد امکان اطلاعات کامل (با استفاده از هرگونه گزینه اشکالزدایی موجود) را درج نموده و گزارشهای باگ را برای نگهدارندگان ارسال کنید (بخش نویسندگان (AUTHORS) را ببینید). در صورت امکان لطفاً از Gentoo bugzilla در نشانی https://bugs.gentoo.org استفاده فرمایید.
همچنین ببینید (SEE ALSO)
chpax(1), dumpelf(1), paxctl(1), pspax(1), readelf(1), scanelf(1), elf(5)
نویسندگان (AUTHORS)
Ned Ludd <solar@gentoo.org>
Mike Frysinger <vapier@gentoo.org>
Fabian Groffen <grobian@gentoo.org>
نکات (NOTES)
| 08/02/2026 | pax-utils 1.3.11 |