В этой статье слишком много ссылок на первоисточники . ( Февраль 2015 г. ) ( Узнайте, как и когда удалить этот шаблон сообщения ) |
изначальный выпуск | 26 мая 1998 г . |
---|---|
Стабильный выпуск | 3.96 / 23 января 2020 г . |
Репозиторий | |
Написано в | C ++ , Сборка |
Операционная система | Microsoft Windows , Linux , macOS , DOS , Atari TOS |
Платформа | i386 , MIPS , AMD64 , ARM , PowerPC , m68k |
Доступно в | английский |
Тип | Исполняемое сжатие |
Лицензия | GPL за исключением сжатых исполняемых файлов, [1] проприетарный алгоритм сжатия в двоичных дистрибутивах [2] |
Интернет сайт | upx |
UPX ( Ultimate Packer for Executables ) - это исполняемый упаковщик с открытым исходным кодом, поддерживающий ряд форматов файлов из разных операционных систем. [3] [4]
Сжатие [ править ]
UPX использует алгоритм сжатия данных под названием UCL [5], который представляет собой реализацию с открытым исходным кодом частей патентованного алгоритма NRV ( Not Really Vanished ) [6] . [2]
UCL был разработан так, чтобы быть достаточно простым, чтобы декомпрессор мог быть реализован всего за несколько сотен байтов кода. UCL не требует выделения дополнительной памяти для распаковки - значительное преимущество, которое означает, что исполняемый файл, упакованный UPX, обычно не требует дополнительной памяти.
UPX (начиная с бета-версии 2.90) может использовать LZMA на большинстве платформ; однако по умолчанию для 16-разрядной версии она отключена из-за низкой скорости распаковки на старых компьютерах (используйте --lzma
для принудительного включения).
Начиная с версии 3.91 UPX также поддерживает 64-битные (x64) исполняемые файлы на платформе Windows . [7] Эта функция в настоящее время объявлена экспериментальной .
Декомпрессия [ править ]
UPX поддерживает два механизма распаковки: метод на месте и извлечение во временный файл .
Техника на месте, которая распаковывает исполняемый файл в память, возможна не на всех поддерживаемых платформах. Его преимущество заключается в том, что он более эффективен с точки зрения памяти и что среда, установленная ОС, остается правильной.
Остальное использует извлечение во временный файл. Эта процедура связана с дополнительными накладными расходами и другими недостатками; однако он позволяет упаковывать исполняемые файлы любого формата. Метод извлечения во временный файл имеет ряд недостатков:
- Специальные разрешения игнорируются, например suid .
argv[0]
не будет иметь смысла.- Несколько запущенных экземпляров исполняемого файла не могут использовать общие сегменты.
Немодифицированная упаковка UPX часто обнаруживается и распаковывается сканерами антивирусного программного обеспечения . UPX также имеет встроенную функцию для распаковки немодифицированных исполняемых файлов, упакованных самим собой.
Поддерживаемые форматы [ править ]
UPX поддерживает следующие форматы: [8]
- Переносимый исполняемый файл ( файлы PE, EXE и DLL ):
- ARM (Windows CE)
- 32-разрядная версия x86 (рабочий стол Windows)
- 64-битный x86-64 (рабочий стол Windows, пока экспериментальный)
- RTM32 (расширитель DOS, созданный компиляторами Borland C / Pascal ) [9]
- Исполняемые файлы COFF , используемые DJGPP2
- формат a.out , BSD i386 (удален)
- Необработанные файлы 8086 / DOS: [nb 1]
- DOS / COM (включая некоторые двоичные образы) [nb 2] [nb 3]
- DOS / EXE [номер 1]
- DOS / SYS [nb 1]
- Watcom / LE (используется DOS4G , PMODE / W , DOS32A и CauseWay )
- TMT / adam (сгенерированный компилятором TMT Pascal)
- Atari / TOS
- Ядро Linux , i386, x86-64 и ARM
- Формат исполняемых и связываемых файлов Linux , i386, x86-64 , ARM , PowerPC , MIPS
- PlayStation 1 / EXE (MIPS R3000)
- Darwin Mach-O , ppc32, i386 и x86-64
UPX в настоящее время не поддерживает PE- файлы, содержащие код CIL, предназначенный для работы в .NET Framework .
Примечания [ править ]
- ^ Б с Для целей DOS, UPX поддерживает специальную опцию
-8086
для того , чтобы заставить встроенный декомпрессор стать совместимым с 8088 / 8086 процессоров, так что сжатые файлы могут быть выполнены и распакованы даже на самых ранних компьютерах , работающих под управлением DOS. - ^ Возможность сжатия файлов DOS в стиле .COM может использоваться также для сжатия других двоичных исполняемых файлов. Некоторые FreeDOS и EDR-DOS файлы ядракак известно, UPX-сжимаемым таким образом.
- ^ Возможность сжатия файлов в стиле DOS .COM может использоваться также для сжатия неисполняемых двоичных файлов данных, если драйвер / приложение, использующее эти файлы, было улучшено для обнаружения файлов, сжатых UPX, и перехода к декомпрессору, встроенному в файл . FreeDOS, как известно, использует это для файлов .CPX, файлов шрифтов .CPI, сжатых UPX.
Ссылки [ править ]
- ^ https://upx.github.io/upx-license.html
- ^ a b "Руководство хакера UPX" . GitHub .
- ^ Марак, Виктор (2015). Основы анализа вредоносных программ Windows . Packt Publishing. п. 188. ISBN 978-1-78528-151-8. Проверено 22 ноября 2015 года .
Такие упаковщики, как Ultimate Packer for Executables (UPX), в большей степени являются компрессорами исполняемых файлов, поскольку основной целью является уменьшение размера, а не обфускация, которая может быть побочным продуктом ...
- ^ Blunden, Билл (2013). Руткит-арсенал (второе изд.). Джонс и Бартлетт Обучение. С. 353–355. ISBN 978-1-4496-2636-5. Проверено 22 ноября 2015 года .
Одним из наиболее распространенных упаковщиков исполняемых файлов является UPX (Ultimate Packer для исполняемых файлов). Он не только обрабатывает десятки различных исполняемых форматов, но и его исходный код доступен в Интернете.
- ^ Маркус Оберхумер. «Библиотека сжатия данных UCL» . oberhumer.com .
- ^ Маркус Оберхумер. «Библиотека сжатия NRV» .
- ^ Новости UPX
- ^ - Руководство по основным командам Linux
- ^ http://www.vogons.org/viewtopic.php?t=25997
Внешние ссылки [ править ]
- Официальный веб-сайт