26-06-2023
Тип | |
---|---|
Написана на | |
Операционная система | |
Первый выпуск |
26 мая 1998 года |
Последняя версия |
3.08 (12 декабря 2011 года) |
Лицензия | |
Сайт |
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. Авторы вирусов используют упаковщики исполняемых файлов для маскировки вирусов от антивирусов.
Архиваторы и компрессоры (сравнение) | |
---|---|
Открытые и свободные |
7-Zip • Ark • File Roller • FreeArc • Info-ZIP • KGB Archiver • PeaZip • The Unarchiver |
Бесплатные | |
Коммерческие |
ALZip • Archive Utility • MacBinary • PowerArchiver • Squeez • StuffIt • WinAce • WinRAR • WinZip |
Командная строка |
Это заготовка статьи о программном обеспечении. Вы можете помочь проекту, исправив и дополнив её. |
UPX.