UPX
the Ultimate Packer for eXecutables

Тип |  Упаковка исполняемых файлов
Разработчик |  Маркус Оберхумер[d]
Написана на |  C++, Ассемблер
Операционные системы  |  Microsoft Windows, Linux, MacOS, DOS, Atari
Первый выпуск |  26 мая 1998 года
Аппаратные платформы  |  x86, MIPS, x86-64, PowerPC и Motorola 68000[d]
Последняя версия |  4.2.2 (3 января 2024 года)
Репозиторий |  github.com/upx/upx
Лицензия |  GNU GPL
Сайт |  upx.github.io

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

## Содержание

* 1 Описание
* 2 Преимущества и недостатки
* 3 Используемые алгоритмы
* 4 Поддерживаемые форматы
* 5 Графические интерфейсы
* 6 Практическое использование
* 7 Примечания
* 8 Ссылки

## Описание[править | править код]

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

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

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

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

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

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

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

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

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

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

* 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 с версии 3.09)
* rtm32/PE
* tmt/adam
* PlayStation1/exe
* watcom/le
* Win32/PE (исключая файлы, построенные на .NET Framework)
* Win64/PE (экспериментально)

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

Для Windows

* PeaZip

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

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

## Примечания[править | править код]

1. ↑ NRV generic data compression library

## Ссылки[править | править код]

* UPX на SourceForge.net

Архиваторы и компрессоры

Открытые
и свободные|

* 7-Zip
* Ark
* DAR
* File Roller
* FreeArc
* Info-ZIP
* KGB Archiver
* PeaZip
* The Unarchiver
* Xarchiver
* Zopfli

Бесплатные|

* DGCA
* Filzip
* GCA
* HaoZip
* IZArc
* QuickZip
* StuffIt Expander
* TUGZip
* Universal Extractor
* WinUHA
* Zipeg
* ZipGenius
* ZipItFree

Коммерческие|

* ACB
* ALZip
* Archive Utility
* MacBinary
* PowerArchiver
* Squeez
* StuffIt
* WinAce
* WinPRS
* WinRAR
* WinRK
* WinZip

Командная строка|

* ARC
* ARJ
* bzip2
* compress
* gzip
* Info-ZIP
* JAR
* LHA
* lzip
* lzop
* PAQ
* PKZIP
* RAR
* SBC
* UPX

Это заготовка статьи о программном обеспечении. Помогите Википедии, дополнив её.

|