Interested Article - UPX
- 2020-02-14
- 1
UPX (the Ultimate Packer for eXecutables) — упаковщик исполняемых файлов , поддерживающий несколько различных платформ и форматов файлов . Это свободное и открытое программное обеспечение , распространяемое по лицензии GNU GPL .
Описание
Сжатый исполняемый файл состоит из модуля распаковки/инициализации и блока данных, содержащего в себе исходный файл в сжатом виде . При запуске модуль распаковки выделяет память и распаковывает туда содержимое блока данных. Для некоторых платформ распаковка в память невозможна, в этом случае используется распаковка во временный файл .
Преимущества и недостатки
Упаковка исполняемого файла позволяет уменьшить занимаемое программным обеспечением место (что может быть критично в случае передачи через сети или выпуске ПО на носителе ограниченной ёмкости).
Использование сегментов в памяти (в операционных системах Windows ) не позволяет операционной системе высвобождать сегменты исполняемого кода без выгрузки содержимого в файл подкачки (что фактически увеличивает требования программы к оперативной памяти). Некоторые программы неспособны работать в сжатом виде, так как используют малодокументированные (или недокументированные) возможности операционной системы по работе с исполняемыми файлами. В случае распаковки во временный файл ( UNIX-подобные системы ) программа теряет возможность использовать argv[0], статус suid-бита игнорируется.
Самое весомое и неоспоримое преимущество — ускорение считывания и запуск сжатых файлов с носителей информации, а также высвобождение дополнительного свободного пространства на внешних накопителях. На сегодняшний день все внешние накопители информации по-прежнему остаются самыми медленными узлами современных вычислительных систем, «тормозящими» быстродействие системы в целом, как и на заре вычислительных технологий. Поэтому нельзя не оценить эффект, возникающий при системном применении упаковщиков исполняемых файлов, таких как UPX. Вычислительная система затрачивает значительно меньше времени на считывание и распаковку сжатого файла в оперативной памяти, нежели на простое считывание этого же неупакованного файла (при считывании с внешнего накопителя время, затрачиваемое на операцию, исчисляется миллисекундами, а время на обработку данных в оперативной памяти — микро- и наносекундами).
Используемые алгоритмы
UPX использует алгоритм сжатия без потерь , называющийся UCL (свободная реализация алгоритма ( англ. Not Really Vanished )) .
UCL-декомпрессор достаточно прост, чтобы быть реализованным в нескольких сотнях байт, и при работе не требует выделения дополнительной памяти.
Следующая значительная версия UPX (3.0) также использует алгоритм LZMA на 32-битных платформах.
Поддерживаемые форматы
- ARM / PE
- Atari /tos
- * BSD / i386
- djgpp2 / COFF
- dos/ com
- dos/ exe
- dos/sys
- Linux /i386
- 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
- /adam
- PlayStation 1/exe
- watcom /le
- Win32 /PE (исключая файлы, построенные на )
- Win64 /PE (экспериментально)
Графические интерфейсы
- Для Windows
Практическое использование
В ранних версиях WinRAR SFX -модули были упакованы UPX.
Примечания
Ссылки
- 2020-02-14
- 1