UPX
Материал из Википедии — свободной энциклопедии
UPX (the Ultimate Packer for eXecutables) - упаковщик исполняемых файлов, поддерживающий несколько различных платформ и форматов файлов. Является открытым программным обеспечением и распространяется по лицензии GNU GPL.
Содержание |
[править] Описание
Сжатый исполняемый файл состоит из модуля распаковки/инициализации и блока данных, содержащего в себе оригинальный сжатый файл. При запуске модуль распаковки выделяет память и распаковывает туда содержимое блока данных. Для некоторых платформ распаковка в память невозможна, в этом случае используется распаковка во временный файл.
[править] Преимущества и недостатки
Пакование исполняемого файла позволяет уменьшить занимаемое программным обеспечением место (что может быть критично в случае передачи через сети или выпуске ПО на носителе ограниченной ёмкости).
Использование сегментов в памяти (в операционных системах Windows) не позволяет операционной системе высвобождать сегменты исполняемого кода без выгрузки содержимого в файл подкачки (что, фактически, увеличивает требования программы к оперативной памяти), процесс распаковки занимает некоторое время и замедляет запуск программы. Некоторые программы не способны работать в сжатом виде, так как используют малодокументированные (или не документированные) возможности операционной системы по работе с исполняемыми файлами. В случае распаковки в временный файл (unix-подобные системы) программа теряет возможность использовать argv[0], статус suid бита игнорируется.
[править] Используемые алгоритмы
UPX использует алгоритм сжатия без потерь, называющийся UCL (свободная реализация алгоритма NRV (англ. Not Really Vanished).
UCL-декомпрессор достаточно прост, чтобы быть реализованным в нескольих сотнях байт, и при работе не требует выделения дополнительной памяти.
[править] Поддерживаемые форматы
- atari/tos
- djgpp2/coff
- dos/com
- dos/exe
- dos/sys
- linux/i386 (a.out и ELF)
- rtm32/PE
- tmt/adam
- ps1/exe
- watcom/le
- win32/PE
[править] Ссылки
- UPX на SourceForge
- UPX на Freshmeat