یو پی ایکس (انگلیسی: UPX مخفف Ultimate Packer for Executables) یک ابزار متن باز و آزاد برای بسته‌بندی (انگلیسی: Packing) فایل‌های اجرایی است که از فرمت‌های مختلف در سیستم عامل‌های مختلف پشتیبانی می‌نماید.[۲][۳]

یو پی ایکس
انتشار ابتدایی۲۶ مه ۱۹۹۸؛ ۲۵ سال پیش (۱۹۹۸-26}})
انتشار پایدار
3.94
۱۲ مه ۲۰۱۷؛ ۶ سال پیش (۲۰۱۷-12}})
مخزن
نوشته‌شده باC++, Assembly
سیستم‌عاملMicrosoft Windows, Linux, macOS, DOS, Atari TOS
بن‌سازه رایانشi386, MIPS, AMD64, ARM, PowerPC, m68k
در دسترس بهانگلیسی
گونهفشرده سازی فایل اجرایی
پروانهGPL with exception for compressed executables[۱]
وبگاه
تصویری از محیط یو پی ایکس

فشرده‌سازی ویرایش

UPX با استفاده از الگوریتم فشرده سازی داده به نام UCL[۴] که یک پیاده‌سازی متن باز از الگوریتم تجاریNRV (مخفف:Not Really Vanished[۵]) است، استفاده می‌کند.[۶]

UCL به نحوی طراحی شده‌است که عمل decompression بتواند به سادگی در چند صد بایت پیاده‌سازی شود. UCL به هیچ حافظه اضافه ای برای decompression نیاز ندارد.

UPX (پس از ۲٫۹۰ بتا) از الگوریتم فشرده سازی LZMA روی بیشتر سیستم عامل‌ها پشتیبانی می‌کند.

از نسخه ۳٫۹۱، UPX از فایل‌های اجرایی ۶۴ بیتی (x64) برای سیستم عامل ویندوز پشتیبانی می‌کند.[۷] البته این ویژگی فعلاً به صورت آزمایشی است.

وافشرده سازی ویرایش

UPX برای وافشرده سازی (انگلیسی: decompression) از دو شیوه استفاده می‌کند: روش در-محل (انگلیسی: in-place) و استخراج در یک فایل موقت.

روش در محل، که فایل اجرایی را در حافظه رم وافشرده می‌کند، روی همه سکوها پشتیبانی نمی‌شود. سایر سکوها از استخراج در فایل موقت استفاده می‌کنند. این روش سربار اضافی دارد و معایب دیگری نیز داد، هرچند، امکان بسته‌بندی (انگلیسی: packing) همه فرمت‌های اجرایی را دارد.

روش استخراج در فایل موقت معایب زیر را دارد:

  • مجوزهای خاص نادیده گرفته می‌شوند مانند suid.
  • argv[0] معنی دار نخواهد بود.
  • چندین نمونه در حال اجرا از فایل اجرایی قادر به به اشتراک گذاری سگمنت‌های مشترک حافظه نیستند.

بسته‌بندی اصلاح نشده UPX، معمولاً بوسیله آنتی‌ویروس‌ها باز شده و بررسی می‌شوند. UPX همچنین قابلیت بازکردن بسته‌های شامل فایل‌های اجرایی اصلاح نشده را دارد.

فرمت‌های پشتیبانی شده ویرایش

  • ARM/PE
  • Atari/TOS
  • *BSD/i386
  • DJGPP2/COFF
  • DOS/COM (از جمله برخی از تصاویر دودویی)
  • DOS/EXE
  • DOS/SYS
  • لینوکس/i386 a.out
  • لینوکس/ELF در i386 ،x86-64، ARM, PowrPC
  • Linux/kernel در i386, x86-64
  • Mach-O/ppc32 Mach-O/i386 (حتی تولید شده توسط Google Go و پس از ۳٫۰۹)
  • rtm32/PE (تولید شده توسط Borland C/Pascal Compilers[۸])
  • tmt/adam (تولید شده توسط کامپایلر TMT Pascal[۹])
  • Playstation1/EXE
  • Watcom/LE ،DOS4G) PMODE/W)
  • Windows/PE EXE files containint native x86 (32-bit) code
  • Windows/PE EXE files containint native x64 (64-bit) code - در مرحله آزمایشی

UPX در حال حاضر از فایل‌های PE که حاوی کدهای CIL (برای اجرا روی Net Framework) است، پشتیبانی نمی‌کند.

خطای یادکرد: برچسپ <ref> که با نام «UPX-images» درون <references> تعریف شده، در متن قبل از آن استفاده نشده است.
خطای یادکرد: برچسپ <ref> که با نام «UPX-data» درون <references> تعریف شده، در متن قبل از آن استفاده نشده است.
خطای یادکرد: برچسپ <ref> که با نام «UPX-8086» درون <references> تعریف شده، در متن قبل از آن استفاده نشده است.

منابع ویرایش

  1. https://upx.github.io/upx-license.html
  2. Marak, Victor (2015). Windows Malware Analysis Essentials. Packt Publishing. p. 188. ISBN 978-1-78528-151-8. Retrieved November 22, 2015. Packers such as Ultimate Packer for Executables (UPX) are more of executable compressors as size reduction is the primary goal, not obfuscation, which can be a byproduct ...
  3. Blunden, Bill (2013). The Rootkit Arsenal (Second ed.). Jones & Bartlett Learning. pp. 353–355. ISBN 978-1-4496-2636-5. Retrieved November 22, 2015. One of the most prolific executable packers is UPX (the Ultimate Packer for executables). Not only does it handle dozens of different executable formats, but also its source code is available online.
  4. http://www.oberhumer.com/opensource/ucl/
  5. http://www.oberhumer.com/products/nrv/
  6. https://github.com/upx/upx/blob/master/README.SRC
  7. https://upx.github.io/upx-news.txt
  8. http://www.vogons.org/viewtopic.php?t=25997
  9. https://linux.die.net/man/1/upx

پیوند به بیرون ویرایش