انتشار اولیه | ۲۶ مه ۱۹۹۸ |
---|---|
انتشار پایدار | 3.94
/ ۱۲ مه ۲۰۱۷ |
مخزن | |
نوشتهشده با | C++, Assembly |
سیستمعامل | Microsoft Windows, Linux, macOS, DOS, Atari TOS |
پلتفرم | i386, MIPS, AMD64, ARM, PowerPC, m68k |
در دسترس به | انگلیسی |
نوع | فشرده سازی فایل اجرایی |
مجوز | GPL with exception for compressed executables[۱] |
وبگاه | upx |
یو پی ایکس (انگلیسی: 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) همه فرمتهای اجرایی را دارد.
روش استخراج در فایل موقت معایب زیر را دارد:
argv[0]
معنی دار نخواهد بود.بستهبندی اصلاح نشده UPX، معمولاً بوسیله آنتیویروسها باز شده و بررسی میشوند. UPX همچنین قابلیت بازکردن بستههای شامل فایلهای اجرایی اصلاح نشده را دارد.
UPX در حال حاضر از فایلهای PE که حاوی کدهای CIL (برای اجرا روی Net Framework) است، پشتیبانی نمیکند.
خطای یادکرد: برچسپ <ref>
که با نام «UPX-images» درون <references>
تعریف شده، در متن قبل از آن استفاده نشده است.
خطای یادکرد: برچسپ <ref>
که با نام «UPX-data» درون <references>
تعریف شده، در متن قبل از آن استفاده نشده است.
خطای یادکرد: برچسپ <ref>
که با نام «UPX-8086» درون <references>
تعریف شده، در متن قبل از آن استفاده نشده است.
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 ...
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.