Сжатие исполняемых файлов

редактировать

Сжатие исполняемых файлов - любое средство сжатие исполняемого файла и объединение сжатых данных с кодом распаковки в один исполняемый файл. Когда этот сжатый исполняемый файл выполняется, код распаковки воссоздает исходный код из сжатого кода перед его выполнением. В большинстве случаев это происходит прозрачно, поэтому сжатый исполняемый файл может использоваться точно так же, как оригинал. Исполняемые компрессоры часто упоминаются как «упаковщики времени выполнения», «упаковщики программного обеспечения», «средства защиты программного обеспечения» (или даже «полиморфные упаковщики » и «инструменты запутывания »).

Сжатый исполняемый файл может рассматриваться как самораспаковывающийся архив, где сжатый исполняемый файл упакован вместе с соответствующим кодом распаковки в исполняемый файл. Некоторые сжатые исполняемые файлы можно распаковать, чтобы восстановить исходный файл программы без непосредственного выполнения. Для этого можно использовать две программы: CUP386 и UNP.

Большинство сжатых исполняемых файлов распаковывают исходный код в памяти, и большинству требуется немного больше памяти для работы (потому что им нужно хранить код распаковщика, сжатые данные и распакованный код). Более того, к некоторым сжатым исполняемым файлам предъявляются дополнительные требования, например к тем, которые записывают распакованный исполняемый файл в файловую систему перед его выполнением.

Сжатие исполняемых файлов не ограничивается двоичными исполняемыми файлами, но также может применяться к сценариям, таким как JavaScript. Поскольку большинство языков сценариев предназначены для работы с читаемым человеком кодом, который имеет высокую избыточность, сжатие может быть очень эффективным и столь же простым, как замена длинных имен, используемых для идентификации переменные и функции с более короткими версиями и / или удаление пробелов.

Содержание

  • 1 Преимущества и недостатки
  • 2 Список исполняемых упаковщиков
    • 2.1 CP / Исполняемый файл M и MSX-DOS
    • 2.2 Исполняемый файл DOS
    • 2.3 Исполняемый файл OS / 2
    • 2.4 Новый исполняемый файл
    • 2.5 Портативный исполняемый файл
    • 2.6 Файлы ELF
    • 2.7 Файлы сборки CLI
    • 2.8 Mac Файлы приложений OS Classic
    • 2.9 Файлы Mach-O (Apple Mac OS X)
    • 2.10 Commodore 64 и VIC 20
    • 2.11 Commodore Amiga
    • 2.12 Java
    • 2.13 Скрипты JavaScript
      • 2.13.1 Компрессоры с самораспакованием
      • 2.13.2 Компрессоры с уменьшением избыточности
  • 3 См. Также
  • 4 Ссылки

Преимущества и недостатки

Распространители программного обеспечения используют сжатие исполняемых файлов по разным причинам, в первую очередь для уменьшения th e вторичное хранилище требования их программного обеспечения; поскольку исполняемые компрессоры специально разработаны для сжатия исполняемого кода, они часто достигают лучшей степени сжатия, чем стандартные средства сжатия данных, такие как gzip, zip или bzip2. Это позволяет распространителям программного обеспечения не выходить за рамки выбранных ими средств распространения (например, CD-ROM, DVD-ROM или гибкий диск ) или сократить время и полосу пропускания, необходимые клиентам для доступа к программному обеспечению, распространяемому через Интернет.

Сжатие исполняемых файлов также часто используется для предотвращения обратного проектирования или для сокрытия содержимого исполняемого файла (например, чтобы скрыть наличие вредоносного ПО от антивирусных сканеров ) за счет проприетарных методов сжатия и / или добавленного шифрования. Исполняемое сжатие может использоваться для предотвращения прямого разборки, маскирования строковых литералов и изменения подписей. Хотя это не исключает вероятность обратного проектирования, это может сделать процесс более дорогостоящим.

Сжатый исполняемый файл требует меньше места для хранения в файловой системе, поэтому меньше времени для передачи данных из файловой системы в память. С другой стороны, требуется некоторое время для распаковки данных перед началом выполнения. Однако скорость различных носителей информации не поспевает за средней скоростью процессора, поэтому хранилище очень часто является узким местом. Таким образом, сжатый исполняемый файл будет загружаться быстрее в большинстве распространенных систем. На современных настольных компьютерах это редко бывает заметно, если исполняемый файл не слишком большой, поэтому скорость загрузки не является основной причиной или против сжатия исполняемого файла.

В операционных системах, которые читают исполняемые образы по запросу с диска (см. виртуальная память ), сжатые исполняемые файлы делают этот процесс менее эффективным. Заглушка декомпрессора выделяет блок памяти для хранения распакованных данных, который остается выделенным, пока исполняемый файл остается загруженным, независимо от того, используется он или нет, все время конкурируя за ресурсы памяти с другими приложениями. Если операционная система использует файл подкачки, распакованные данные должны быть записаны в него, чтобы освободить память, вместо того, чтобы просто отбрасывать неиспользуемые блоки данных и при необходимости повторно загружать их из исполняемого образа. Обычно это незаметно, но становится проблемой, когда исполняемый файл загружается более одного раза одновременно - операционная система не может повторно использовать блоки данных, которые она уже загрузила, данные должны быть распакованы в новый блок памяти и будут заменяться самостоятельно, если не используется. Дополнительные требования к хранилищу и времени означают, что необходимо тщательно взвесить, следует ли сжимать исполняемые файлы, которые обычно запускаются более одного раза одновременно.

Другой недостаток заключается в том, что некоторые утилиты больше не могут идентифицировать зависимости библиотеки времени выполнения, поскольку видна только статически связанная заглушка экстрактора.

Кроме того, некоторые старые антивирусные сканеры просто сообщают обо всех сжатых исполняемых файлах как вирусы, потому что заглушки декомпрессора имеют общие характеристики с ними. Большинство современных антивирусных сканеров могут распаковывать несколько различных уровней сжатия исполняемых файлов, чтобы проверить сам исполняемый файл внутри, но у некоторых популярных антивирусных сканеров и антивирусных программ были проблемы с ложными срабатываниями тревог на сжатые исполняемые файлы. В попытке решить проблему вредоносного ПО, запутанного с помощью упаковщиков времени выполнения, IEEE Industry Connections Security Group представила программное обеспечение taggant system.

Сжатие исполняемых файлов было более популярным, когда компьютеры были ограничены объемом памяти гибкими дисками, которые были как медленными, так и носителями малой емкости, и небольшими жесткими дисками ; это позволяло компьютеру хранить больше программного обеспечения в том же объеме пространства без неудобств, связанных с необходимостью вручную распаковывать архивный файл каждый раз, когда пользователь хотел использовать программное обеспечение. Однако сжатие исполняемых файлов стало менее популярным из-за увеличения емкости хранилища на компьютерах. Он используется в демосцене, где демоверсии должны оставаться в пределах размера, например 64 килобайт, для участия в некоторых соревнованиях. Только очень сложные форматы сжатия, которые увеличивают время загрузки, делают исполняемый файл достаточно маленьким, чтобы участвовать в этих соревнованиях.

Список упаковщиков исполняемых файлов

Исполняемый файл CP / M и MSX-DOS

Известные компрессоры исполняемых файлов для CP / M / MSX-DOS .COM файлы :

  • PMexe (с 1990 года, написанные Йошихико Мино, PMARC.COM + PMEXE.CPM)

Исполняемый файл DOS

Известные компрессоры исполняемых файлов для DOS исполняемые файлы (.COM или .EXE ):

  • Realia Spacemaker (с 1982, автор: Роберт Б.К. Дьюар, SM.COM, подпись «MEMORY $»)
  • Microsoft EXEPACK (с 1985, написано, EXEPACK.EXE, LINK.EXE / E [XEPACK], подпись «RB»)
  • LZEXE (с 1989, написано от Фабрис Беллар, LZEXE.EXE)
  • PKWare PKLite (с 1990 года, автор Фил Кац, PKLITE.EXE)
  • DIET (с 1991, написано DIET.EXE)
  • TINYPROG (TINYPROG.EXE)
  • Программное обеспечение RJS RJCRUSH (с 1994 года написано Роландом Скиннером, RJCRUSH.EXE)
  • XPA (с 1995 г., автор: JauMing Tseng, XPA.EXE)
  • Ibsen Software aPACK (с 1997 г., автор: Jørgen Ibsen, APACK.EXE)
  • UPX (с 1998 года, написано Маркусом FXJ Оберхумером и Ласло Мольнаром)
  • 32LiTE (с 1998 года, написано Олегом Прохоровым, 32LITE.EXE)
  • Knowledge Dynamics LZW Compressor
  • WWpack (написано Петром Варезаком и Рафалом Вежбицким, WWPACK.EXE)
  • 624 (только для файлов.COM размером менее 25 КБ, используется LZW )
  • AINEXE
  • AvPack
  • ComPAck
  • HASP Envelope
  • LGLZ
  • PMWLITE
  • ProPack
  • UCEXE
  • WDOSX
  • XE
  • XPack

Исполняемый файл OS / 2

Известные компрессоры исполняемых файлов в OS/2 :

  • NeLite
  • LxLite

Новый исполняемый файл

Известные компрессоры исполняемых файлов для Новые исполняемые файлы :

  • PackWin
  • PKWare PKLite (начиная с версии 2.01)
  • WinLite

Portable Executable

Известные компрессоры исполняемых файлов для Переносимые исполняемые файлы :

Примечание: клиенты, отмеченные фиолетовым цветом, больше не находятся в разработке.

ИмяПоследняя стабильная версияЛицензия на программное обеспечение x86-64 поддержка
32Lite
Alienyze1.4 (17 августа 2020 г. (2020-08 -17))Собственный Нет
ANDpakk2
Armadillo9.62 (7 июня 2013 (2013-06-07))Собственный Да
ASPack2.40 (7 декабря 2018 (2018-12-07))Собственный Да
ASPR (ASProtect)2.78 (7 декабря 2018 (2018-12 -07))Собственный Да
BeRoEXEPacker
BIN-crypter
BoxedApp Packer3.3 (26 июля 2015 (2015-07-26))Собственный Да
CExe1.0b (20 июля 2001 (2001-07-20))GPL Нет
Crinkler2.2 (15 июня 2019 (2019-06-15))Бесплатное Да
dotBundle1.3 (4 апреля 2013 (2013-04-04))Собственное Да
Enigma Protector6.60 (21 августа 2019 (2019-08-21))Собственный Да
Enigma Virtual Box9,40 (10 октября 2019 (2019- 10-10))Собственный Да
exe32pack
EXE Bundle3. 11 (7 января 2011 (2011-01-07))Собственный ?
EXECryptor
EXE Stealth4.14 (29 июня 2011 (2011-06-29))Собственный ?
eXPressor1.8.0.1 (14 января 2010 (2010-01-14))Собственный ?
FSG2.0 (24 мая 2004 (2004-05-24))Бесплатное Нет
kkrunchy src0.23a4 (Неизвестно)Общественное достояние Нет
MEW1.1 (Неизвестно)Бесплатное Нет
MPRESS2,19 (2 января 2012 (2012-01-02))Бесплатное ПО Да
MuCruncher
NeoLite
.netshrink2.7 (2 июля 2016 (2016-07-02))Собственный Да
NsPack
Obsidium1.6 (11 апреля 2017 (2017-04 -11))Собственный Да
PECompact
PELock2.06 (15 августа 2016 (2016-08-15))Собственный Нет
PEPack
PESpin1.33 (3 мая 2011 (2011-05-03))Freeware Да
Petite2.4 (22 сентября 2016 (2016- 09-22))Бесплатное Нет
PKLite32
RLPack Basic1.21 (31 октября 2008 г. (2 008-10-31))GPL Нет
Shrinker32
Smart Packer Pro X2.0.0.1 (3 июня 2019 (2019-06-03))Собственный Да
Themida / WinLicense3.0 (24 октября 2019 (2019-10-24))Собственный Да
Upack
UPX 3,95 (26 августа 2018 г. (2018-08-26))GPL экспериментальный
VMProtect3.4 (3 августа 2019 (2019-08-03))Собственный Да
WWPack32
XComp / XPack0,98 (18 февраля 2007 (2007-02-18))Бесплатное ПО Нет
Yoda's Crypte
YZPack

Файлы ELF

Известные исполняемые компрессоры для файлов ELF :

  • gzexe (использует сценарий оболочки заглушку и gzip, работает на большинстве Unix -подобные системы)
  • HASP Envelope
  • UPX
  • 624 (для Linux / 386)

Файлы сборки CLI

Известные исполняемые компрессоры для сборки CLI файлы:

  • .NETZ
  • NsPack
  • Mpress
  • HASP Envelope
  • .netshrink
  • dotBundle
  • Exepack.NET
  • DotProtect: Коммерческий защитник / упаковщик для r.net и моно. Обеспечивает онлайн-проверки и «стандартное шифрование».

Файлы приложений Mac OS Classic

Известные исполняемые файлы компрессоров для файлов приложений Mac OS Classic :

  • Application VISE
  • StuffIt InstallerMaker

Файлы Mach-O (Apple Mac OS X)

Известные исполняемые компрессоры для файлов Mach-O (Apple Mac OS X):

  • HASP Envelope
  • UPX
  • VMProtect

Commodore 64 и VIC 20

Известные исполняемые компрессоры для исполняемых файлов на Commodore 64 и VIC 20 :

  • PuCrunch
  • Exomizer
  • ByteBoozer

Commodore Amiga

Известные компрессоры исполняемых файлов для исполняемых файлов в серии Commodore Amiga :

  • powerpacker
  • Titanics cruncher
  • imploder
  • TNM cruncher
  • Shrinkler
  • PackFire

Java

Известные исполняемые компрессоры для Java :

JAR файлы:

WAR файлы:

  • HASP Envelope

сценарии JavaScript

Есть два года Части сжатия, которые можно применить к сценариям JavaScript :

  • Уменьшите избыточность в сценарии (удалив комментарии, пробелы и сократите имена переменных и функций). Это не меняет поведения сценария.
  • Сжать исходный сценарий и создать новый сценарий, содержащий код распаковки и сжатые данные. Это похоже на сжатие двоичных исполняемых файлов.

Самораспаковывающиеся компрессоры

Они сжимают исходный сценарий и выводят новый сценарий, который имеет распаковщик и сжатые данные.

  • JsSfx
  • Packify

Компрессоры, уменьшающие избыточность

Они удаляют пробелы, удаляют комментарии и сокращают имена переменных и функций, но не изменяют поведение скрипта.

  • Packer
  • Компрессор YUI
  • Shrinksafe
  • JSMin

См. Также

Список литературы

Последняя правка сделана 2021-05-19 09:35:04
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте