Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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 .

Примечания [ править ]

  1. ^ Б с Для целей DOS, UPX поддерживает специальную опцию -8086для того , чтобы заставить встроенный декомпрессор стать совместимым с 8088 / 8086 процессоров, так что сжатые файлы могут быть выполнены и распакованы даже на самых ранних компьютерах , работающих под управлением DOS.
  2. ^ Возможность сжатия файлов DOS в стиле .COM может использоваться также для сжатия других двоичных исполняемых файлов. Некоторые FreeDOS и EDR-DOS файлы ядракак известно, UPX-сжимаемым таким образом.
  3. ^ Возможность сжатия файлов в стиле DOS .COM может использоваться также для сжатия неисполняемых двоичных файлов данных, если драйвер / приложение, использующее эти файлы, было улучшено для обнаружения файлов, сжатых UPX, и перехода к декомпрессору, встроенному в файл . FreeDOS, как известно, использует это для файлов .CPX, файлов шрифтов .CPI, сжатых UPX.

Ссылки [ править ]

  1. ^ https://upx.github.io/upx-license.html
  2. ^ a b "Руководство хакера UPX" . GitHub .
  3. ^ Марак, Виктор (2015). Основы анализа вредоносных программ Windows . Packt Publishing. п. 188. ISBN 978-1-78528-151-8. Проверено 22 ноября 2015 года . Такие упаковщики, как Ultimate Packer for Executables (UPX), в большей степени являются компрессорами исполняемых файлов, поскольку основной целью является уменьшение размера, а не обфускация, которая может быть побочным продуктом ...
  4. ^ Blunden, Билл (2013). Руткит-арсенал (второе изд.). Джонс и Бартлетт Обучение. С. 353–355. ISBN 978-1-4496-2636-5. Проверено 22 ноября 2015 года . Одним из наиболее распространенных упаковщиков исполняемых файлов является UPX (Ultimate Packer для исполняемых файлов). Он не только обрабатывает десятки различных исполняемых форматов, но и его исходный код доступен в Интернете.
  5. ^ Маркус Оберхумер. «Библиотека сжатия данных UCL» . oberhumer.com .
  6. ^ Маркус Оберхумер. «Библиотека сжатия NRV» .
  7. ^ Новости UPX
  8. ^ upx(1)  -  Руководство по основным командам Linux
  9. ^ http://www.vogons.org/viewtopic.php?t=25997

Внешние ссылки [ править ]

  • Официальный веб-сайт