UPX

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
UPX
the Ultimate Packer for eXecutables
UPX screenshot.png
Тип

Упаковка исполняемых файлов

Разработчик

Markus F.X.J. Oberhumer[d]

Написана на

C++, Ассемблер

Операционная система

Microsoft Windows, Linux, MacOS, DOS, Atari

Первый выпуск

26 мая 1998 года

Аппаратная платформа

x86, MIPS, x86-64, PowerPC и Motorola 68000[d]

Последняя версия

3.94 (12 мая 2017 года)

Лицензия

GNU GPL

Сайт

upx.github.io

UPX (the Ultimate Packer for eXecutables) — упаковщик исполняемых файлов, поддерживающий несколько различных платформ и форматов файлов. Это свободное и открытое программное обеспечение, распространяемое по лицензии GNU GPL.

Описание[править | править вики-текст]

Сжатый исполняемый файл состоит из модуля распаковки/инициализации и блока данных, содержащего в себе исходный файл в сжатом виде. При запуске модуль распаковки выделяет память и распаковывает туда содержимое блока данных. Для некоторых платформ распаковка в память невозможна, в этом случае используется распаковка во временный файл.

Преимущества и недостатки[править | править вики-текст]

Упаковка исполняемого файла позволяет уменьшить занимаемое программным обеспечением место (что может быть критично в случае передачи через сети или выпуске ПО на носителе ограниченной ёмкости).

Использование сегментов в памяти (в операционных системах Windows) не позволяет операционной системе высвобождать сегменты исполняемого кода без выгрузки содержимого в файл подкачки (что фактически увеличивает требования программы к оперативной памяти). Некоторые программы неспособны работать в сжатом виде, так как используют малодокументированные (или недокументированные) возможности операционной системы по работе с исполняемыми файлами. В случае распаковки во временный файл (UNIX-подобные системы) программа теряет возможность использовать argv[0], статус suid-бита игнорируется.

Самое весомое и неоспоримое преимущество - ускорение считывания и запуск сжатых файлов с носителей информации, а также высвобождение дополнительного свободного пространства на внешних накопителях. На сегодняшний день все внешние накопители информации по-прежнему остаются самыми медленными узлами современных вычислительных систем, «тормозящими» быстродействие системы в целом, как и на заре вычислительных технологий. Поэтому нельзя не оценить эффект, возникающий при системном применении упаковщиков исполняемых файлов, таких как UPX. Вычислительная система затрачивает значительно меньше времени на считывание и распаковку сжатого файла в оперативной памяти, нежели на простое считывание этого же неупакованного файла (при считывании с внешнего накопителя время, затрачиваемое на операцию, исчисляется миллисекундами, а время на обработку данных в оперативной памяти — микро- и наносекундами).

Используемые алгоритмы[править | править вики-текст]

UPX использует алгоритм сжатия без потерь, называющийся UCL (свободная реализация алгоритма NRV (англ. Not Really Vanished)).[1]

UCL-декомпрессор достаточно прост, чтобы быть реализованным в нескольких сотнях байт, и при работе не требует выделения дополнительной памяти.

Следующая значительная версия UPX (3.0) также использует алгоритм LZMA на 32-битных платформах.

Поддерживаемые форматы[править | править вики-текст]

Графические интерфейсы[править | править вики-текст]

Для Windows

Практическое использование[править | править вики-текст]

В ранних версиях WinRAR SFX-модули были упакованы UPX.

Примечания[править | править вики-текст]

Ссылки[править | править вики-текст]