یو پی ایکس

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

فشرده‌سازی 
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) است، پشتیبانی نمی‌کند.

منابع

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

نرم‌افزارهای آزاد نوشته‌شده با سی++
نرم‌افزارهای ۱۹۹۸ (میلادی)
نرم‌افزارهای فشرده‌سازی آزاد
نرم‌افزارهای نوشته‌شده با اسمبلی