یو پی ایکس
یو پی ایکس (انگلیسی: UPX مخفف Ultimate Packer for Executables) یک ابزار متن باز و آزاد برای بستهبندی (انگلیسی: Packing) فایلهای اجرایی است که از فرمتهای مختلف در سیستم عاملهای مختلف پشتیبانی مینماید.
انتشار ابتدایی | ۲۶ مه ۱۹۹۸ |
---|---|
انتشار پایدار | 3.94
۱۲ مه ۲۰۱۷ |
مخزن | |
نوشتهشده با | 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) است، پشتیبانی نمیکند.
منابع
- ↑ https://upx.github.io/upx-license.html
- ↑ 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 ...
- ↑ 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.
- ↑ http://www.oberhumer.com/opensource/ucl/
- ↑ http://www.oberhumer.com/products/nrv/
- ↑ https://github.com/upx/upx/blob/master/README.SRC
- ↑ https://upx.github.io/upx-news.txt
- ↑ http://www.vogons.org/viewtopic.php?t=25997
- ↑ https://linux.die.net/man/1/upx