UPX | это... Что такое UPX? (original) (raw)
UPX the Ultimate Packer for eXecutables
Тип | Упаковка исполняемых файлов |
---|---|
Написана на | C++, Ассемблер |
Операционная система | Microsoft Windows, Linux, MacOS, DOS, Atari |
Первый выпуск | 26 мая 1998 года |
Последняя версия | 3.08 (12 декабря 2011 года) |
Лицензия | GNU GPL |
Сайт | upx.sf.net |
UPX (the Ultimate Packer for eXecutables) — упаковщик исполняемых файлов, поддерживающий несколько различных платформ и форматов файлов. Является свободным и открытым программным обеспечением, и распространяется по лицензии GNU GPL.
Содержание
- 1 Описание
- 2 Преимущества и недостатки
- 3 Используемые алгоритмы
- 4 Поддерживаемые форматы
- 5 Практическое использование
- 6 Примечания
- 7 Ссылки
Описание
Сжатый исполняемый файл состоит из модуля распаковки/инициализации и блока данных, содержащего в себе исходный файл в сжатом виде. При запуске модуль распаковки выделяет память и распаковывает туда содержимое блока данных. Для некоторых платформ распаковка в память невозможна, в этом случае используется распаковка во временный файл.
Преимущества и недостатки
Упаковка исполняемого файла позволяет уменьшить занимаемое программным обеспечением место (что может быть критично в случае передачи через сети или выпуске ПО на носителе ограниченной ёмкости).
Использование сегментов в памяти (в операционных системах Windows) не позволяет операционной системе высвобождать сегменты исполняемого кода без выгрузки содержимого в файл подкачки (что, фактически, увеличивает требования программы к оперативной памяти). Некоторые программы не способны работать в сжатом виде, так как используют малодокументированные (или недокументированные) возможности операционной системы по работе с исполняемыми файлами. В случае распаковки во временный файл (unix-подобные системы) программа теряет возможность использовать argv[0], статус suid-бита игнорируется.
Самым весомым и неоспоримым преимуществом является ускорение считывания и запуск сжатых файлов с носителей информации, помимо высвобождения дополнительного свободного пространства на внешних накопителях информации. К сожалению, на сегодняшний день все внешние накопители информации всё также остаются самыми медленными узлами современных вычислительных систем, «тормозящими» быстродействие системы в целом, как и на заре вычислительных технологий. Поэтому нельзя не оценить эффект, возникающий при системном применении упаковщиков исполняемых файлов, таких, как UPX. Вычислительная система затрачивает на порядок меньше времени на считывание и распаковку сжатого файла в оперативной памяти, нежели на простое считывание этого же, неупакованного файла (при считывании с внешнего накопителя время, затрачиваемое на операцию исчисляется миллисекундами, время, затрачиваемое на обработку данных в оперативной памяти исчисляется микро- и наносекундами).
Используемые алгоритмы
UPX использует алгоритм сжатия без потерь, называющийся UCL (свободная реализация алгоритма NRV (англ. Not Really Vanished)).[1]
UCL-декомпрессор достаточно прост, чтобы быть реализованным в нескольких сотнях байт, и при работе не требует выделения дополнительной памяти.
Следующая значительная версия UPX (3.0) также использует алгоритм LZMA на 32/64 битных платформах.
Поддерживаемые форматы
- ARM/PE
- Atari/tos
- *BSD/i386
- djgpp2/COFF
- dos/com
- dos/exe
- dos/sys
- Linux/i386 a.out
- Linux/ELF on i386, x86-64, ARM, PowerPC
- Linux/kernel on i386, x86-64 and ARM
- Mach-O/ppc32, Mach-O/i386, Mach-O/x64 (кроме скомпилированных Google Go)
- rtm32/PE
- tmt/adam
- PlayStation1/exe
- watcom/le
- Win32/PE (исключая файлы, построенные на .NET Framework)
Практическое использование
В ранних версиях WinRAR SFX-модули были упакованы UPX.
Примечания
Ссылки
![]() |
|
---|---|
Открытые и свободные | 7-Zip • Ark • File Roller • FreeArc • Info-ZIP • KGB Archiver • PeaZip • The Unarchiver |
Бесплатные | DGCA • Filzip • GCA • HaoZip • IZArc • QuickZip • StuffIt Expander • TUGZip • Zipeg • ZipGenius • ZipItFree • WinUHA |
Коммерческие | ALZip • Archive Utility • MacBinary • PowerArchiver • Squeez • StuffIt • WinAce • WinRAR • WinZip |
Командная строка | ARC • ARJ • JAR • bzip2 • compress • gzip • Info-ZIP • LHA • lzip • lzop • PAQ • PKZIP • RAR • SBC • UPX |