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.

Содержание

Описание

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

Преимущества и недостатки

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

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

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

Используемые алгоритмы

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

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

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

Поддерживаемые форматы

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

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

Примечания

  1. NRV generic data compression library

Ссылки

Просмотр этого шаблона Архиваторы и компрессоры (сравнение)
Открытые и свободные 7-ZipArkFile RollerFreeArc • Info-ZIP • KGB ArchiverPeaZipThe Unarchiver
Бесплатные DGCA • Filzip • GCA • HaoZipIZArcQuickZip • StuffIt Expander • TUGZipZipegZipGeniusZipItFreeWinUHA
Коммерческие ALZip • Archive Utility • MacBinary • PowerArchiver • Squeez • StuffIt • WinAceWinRARWinZip
Командная строка ARCARJJARbzip2 • compress • gzip • Info-ZIP • LHAlziplzopPAQPKZIPRAR • SBC • UPX