Исполняемые сжатия любые средства сжатия в исполняемый файл и объединения сжатых данных с декомпрессионной кода в единый исполняемый файл. Когда этот сжатый исполняемый файл выполняется, код распаковки воссоздает исходный код из сжатого кода перед его выполнением. В большинстве случаев это происходит прозрачно, поэтому сжатый исполняемый файл можно использовать точно так же, как оригинал. Исполняемые компрессоры часто называют «упаковщиками времени выполнения», «упаковщиками программного обеспечения», «средствами защиты программного обеспечения» (или даже « полиморфными упаковщиками » и « средствами запутывания »).
Сжатый исполняемый файл можно рассматривать как самораспаковывающийся архив , где сжатый исполняемый файл упакован вместе с соответствующим кодом распаковки в исполняемый файл. Некоторые сжатые исполняемые файлы можно распаковать для восстановления исходного файла программы без непосредственного выполнения. Для этого можно использовать две программы: CUP386 и UNP.
Большинство сжатых исполняемых файлов распаковывают исходный код в памяти, и большинству требуется немного больше памяти для работы (потому что они должны хранить код распаковщика, сжатые данные и распакованный код). Более того, к некоторым сжатым исполняемым файлам предъявляются дополнительные требования, например к тем, которые записывают распакованный исполняемый файл в файловую систему перед его выполнением.
Сжатие исполняемых файлов не ограничивается двоичными исполняемыми файлами, но также может применяться к сценариям, таким как JavaScript . Поскольку большинство языков сценариев предназначены для работы с читаемым человеком кодом , который имеет высокую избыточность , сжатие может быть очень эффективным и столь же простым, как замена длинных имен, используемых для идентификации переменных и функций, более короткими версиями и / или удаление пробелов .
Преимущества и недостатки
Дистрибьюторы программного обеспечения используют сжатие исполняемых файлов по разным причинам, в первую очередь для уменьшения требований к вторичному хранилищу своего программного обеспечения; поскольку исполняемые компрессоры специально разработаны для сжатия исполняемого кода, они часто достигают большей степени сжатия, чем стандартные средства сжатия данных, такие как gzip , zip или bzip2 [ необходима ссылка ] . Это позволяет дистрибьюторам программного обеспечения не выходить за рамки выбранных ими средств распространения (таких как CD-ROM , DVD-ROM или гибкий диск ) или сокращать время и полосу пропускания, необходимые клиентам для доступа к программному обеспечению, распространяемому через Интернет .
Сжатие исполняемых файлов также часто используется для предотвращения обратного проектирования или для сокрытия содержимого исполняемого файла (например, чтобы скрыть присутствие вредоносных программ от антивирусных сканеров ) с помощью специальных методов сжатия и / или дополнительного шифрования . Исполняемое сжатие может использоваться для предотвращения прямой разборки , маскирования строковых литералов и изменения подписей. Хотя это не исключает возможности обратного проектирования, это может сделать процесс более дорогостоящим.
Сжатый исполняемый файл требует меньше места для хранения в файловой системе, поэтому меньше времени для передачи данных из файловой системы в память. С другой стороны, для распаковки данных перед началом выполнения требуется некоторое время. Однако скорость различных носителей информации не поспевает за средней скоростью процессора, поэтому хранилище очень часто является узким местом. Таким образом, сжатый исполняемый файл будет загружаться быстрее в большинстве распространенных систем. На современных настольных компьютерах это редко бывает заметно, если исполняемый файл не является необычно большим, поэтому скорость загрузки не является основной причиной или против сжатия исполняемого файла.
В операционных системах, которые читают исполняемые образы по запросу с диска (см. Виртуальную память ), сжатые исполняемые файлы делают этот процесс менее эффективным. Заглушка декомпрессора выделяет блок памяти для хранения распакованных данных, который остается выделенным, пока исполняемый файл остается загруженным, независимо от того, используется он или нет, постоянно конкурируя за ресурсы памяти с другими приложениями. Если операционная система использует файл подкачки, распакованные данные должны быть записаны в него, чтобы освободить память, вместо того, чтобы просто отбрасывать неиспользуемые блоки данных и при необходимости повторно загружать их из исполняемого образа. Обычно это незаметно, но становится проблемой, когда исполняемый файл загружается более одного раза одновременно - операционная система не может повторно использовать блоки данных, которые она уже загрузила, данные должны быть распакованы в новый блок памяти и будут заменяться самостоятельно, если не используется. Дополнительные требования к хранилищу и времени означают, что необходимо тщательно взвесить, следует ли сжимать исполняемые файлы, которые обычно запускаются более одного раза одновременно.
Другой недостаток состоит в том, что некоторые утилиты больше не могут идентифицировать зависимости библиотеки времени выполнения , поскольку видна только статически связанная заглушка экстрактора.
Кроме того, некоторые старые антивирусные сканеры просто сообщают обо всех сжатых исполняемых файлах как о вирусах, потому что заглушки декомпрессора имеют общие с ними характеристики. Большинство современных антивирусных сканеров могут распаковывать несколько различных уровней сжатия исполняемых файлов для проверки фактического исполняемого файла внутри, но у некоторых популярных антивирусных сканеров и антивирусных программ возникают проблемы с ложными срабатываниями тревожных сигналов для сжатых исполняемых файлов. В попытке решить проблему вредоносного обфусцированную с помощью упаковщики IEEE Industry Connections Security Group представила программную метку , систему.
Сжатие исполняемых файлов было более популярным, когда компьютеры были ограничены емкостью дискет , которые были как медленными, так и носителями малой емкости, а также небольшими жесткими дисками ; это позволяло компьютеру хранить больше программного обеспечения в том же объеме пространства без неудобств, связанных с необходимостью вручную распаковывать архивный файл каждый раз, когда пользователь хотел использовать программное обеспечение. Однако сжатие исполняемых файлов стало менее популярным из-за увеличения емкости хранилища на компьютерах. Он используется в демосцене, где демоверсии должны оставаться в пределах размера, например 64 килобайта, чтобы участвовать в некоторых соревнованиях. Только очень сложные форматы сжатия, которые увеличивают время загрузки, позволяют сохранять исполняемый файл достаточно маленьким, чтобы участвовать в этих соревнованиях.
Список исполняемых упаковщиков
Исполняемый файл CP / M и MSX-DOS
Известные исполняемые компрессоры для файлов CP / M / MSX-DOS .COM :
- PMexe (с 1990 г., автор - Йошихико Мино, PMARC.COM + PMEXE.CPM) [1]
Исполняемый файл DOS
Известные исполняемые компрессоры для исполняемых файлов DOS ( .COM или .EXE ):
- Realia Spacemaker (с 1982, автор Роберт Б.К. Дьюар , SM.COM, подпись "MEMORY $") [2] [3] [4] [5] [6] [7] [8] [9]
- Microsoft EXEPACK (с 1985, написано Рубеном Борманом , EXEPACK.EXE, LINK.EXE / E [XEPACK], подпись «RB») [9] [5] [4] [10]
- LZEXE (с 1989 г., автор - Фабрис Беллар , LZEXE.EXE) [11] [12]
- PKWare PKLite (с 1990 г., автор - Фил Кац , PKLITE.EXE) [12] [13]
- ДИЕТА (с 1991 г., автор - Тедди Мацумото , DIET.EXE) [12]
- TINYPROG (TINYPROG.EXE)
- Программное обеспечение RJS RJCRUSH (с 1994, написано Роландом Скиннером, RJCRUSH.EXE)
- XPA (с 1995 г., автор: JauMing Tseng, XPA.EXE)
- Ibsen Software aPACK (с 1997, написано Йоргеном Ибсеном, APACK.EXE)
- UPX (с 1998 г., написано Маркусом FXJ Оберхумером и Ласло Мольнаром)
- 32LiTE (с 1998 г., автор Олег Прохоров, 32LITE.EXE)
- Компрессор Knowledge Dynamics LZW [14]
- WWpack (написано Петром Варезаком и Рафалом Вежбицки, WWPACK.EXE)
- 624 (только для файлов .COM размером менее 25 КБ, используется LZW )
- AINEXE
- AvPack
- ComPAck
- Конверт HASP
- LGLZ
- PMWLITE
- ProPack
- UCEXE
- WDOSX
- XE
- XPack
Исполняемый файл OS / 2
Известные компрессоры исполняемых файлов под OS / 2 :
- NeLite
- LxLite
Новый исполняемый файл
Известные компрессоры исполняемых файлов для новых исполняемых файлов :
- PackWin
- PKWare PKLite (с версии 2.01)
- WinLite
Переносимый исполняемый файл
Известные компрессоры исполняемых файлов для переносимых исполняемых файлов :
Примечание: клиенты, отмеченные фиолетовым цветом, больше не находятся в разработке.
Имя | Последняя конюшня | Лицензия на программное обеспечение | поддержка x86-64 |
---|---|---|---|
32Lite | |||
Алиенизе | 1.4 (17 августа 2020 г. | )Проприетарный | Нет |
ANDpakk2 | |||
Броненосец | 9,62 (7 июня 2013 г. | )Проприетарный | да |
ASPack | 2.40 (7 декабря 2018 г. | )Проприетарный | да |
АСПР (ASProtect) | 2.78 (7 декабря 2018 г. | )Проприетарный | да |
BeRoEXEPacker | |||
BIN-шифровальщик | |||
Упаковщик BoxedApp | 3.3 (26 июля 2015 г. | )Проприетарный | да |
CExe | 1.0b (20 июля 2001 г. | )GPL | Нет |
Crinkler | 2.2 (15 июня 2019 г. | )Бесплатное ПО | да |
dotBundle | 1.3 (4 апреля 2013 г. | ) [15]Проприетарный | да |
Enigma Protector | 6.60 (21 августа 2019 г. | ) [16]Проприетарный | да |
Виртуальная коробка Enigma | 9,40 (10 октября 2019 г. | ) [16]Проприетарный | да |
exe32pack | |||
Пакет EXE | 3.11 (7 января 2011 г. | ) [17]Проприетарный | ? |
EXECryptor | |||
EXE Стелс | 4.14 (29 июня 2011 г. | ) [17]Проприетарный | ? |
eXPressor | 1.8.0.1 (14 января 2010 г. | )Проприетарный | ? |
ФСГ | 2.0 (24 мая 2004 г. | ) [18]Бесплатное ПО | Нет |
kkrunchy src | 0.23a4 (Неизвестно) | Всеобщее достояние | Нет |
MEW | 1.1 (Неизвестно) | Бесплатное ПО | Нет |
MPRESS | 2.19 (2 января 2012 г. | )Бесплатное ПО | да |
MuCruncher | |||
NeoLite | |||
.netshrink | 2.7 (2 июля 2016 г. | ) [19]Проприетарный | да |
NsPack | |||
Обсидиум | 1.6 (11 апреля 2017 г. | ) [20]Проприетарный | да |
PECompact | |||
PELock | 2.06 (15 августа 2016 г. | ) [21]Проприетарный | Нет |
PEPack | |||
PESpin | 1.33 (3 мая 2011 г. | )Бесплатное ПО | да |
Маленькая | 2.4 (22 сентября 2016 г. | )Бесплатное ПО | Нет |
PKLite32 | |||
RLPack Basic | 1.21 (31 октября 2008 г. | )GPL | Нет |
Термоусадочная машина32 | |||
Умный упаковщик Pro X | 2.0.0.1 (3 июня 2019 г. | )Проприетарный | да |
Themida / WinLicense | 3.0 (24 октября 2019 г. | )Проприетарный | да |
Upack | |||
UPX | 3.96 (23 января 2020 г. | )GPL | экспериментальный |
VMProtect | 3.4 (3 августа 2019 г. | )Проприетарный | да |
WWPack32 | |||
XComp / XPack | 0,98 (18 февраля 2007 г. | )Бесплатное ПО | Нет |
Крипта Йоды | |||
YZPack |
Файлы ELF
Известные исполняемые компрессоры для файлов ELF :
- gzexe (использует заглушку сценария оболочки и gzip , работает в большинстве Unix-подобных систем)
- Конверт HASP
- UPX
- 624 (для Linux / 386) [22]
Файлы сборки CLI
Известные исполняемые компрессоры для файлов сборки CLI :
- .NETZ
- NsPack
- Mpress
- Конверт HASP
- .netshrink
- dotBundle
- Exepack.NET
- DotProtect: [23] Коммерческий защитник / упаковщик для .net и mono. Возможности онлайн-проверки и «стандартное шифрование».
Файлы приложения Mac OS Classic
Известные исполняемые компрессоры для файлов приложений Mac OS Classic :
- Приложение VISE [24]
- StuffIt InstallerMaker
Файлы Mach-O (Apple Mac OS X)
Известные исполняемые компрессоры для файлов Mach-O (Apple Mac OS X):
- Конверт HASP
- UPX
- VMProtect
Commodore 64 и VIC 20
Известные компрессоры исполняемых файлов для исполняемых файлов на Commodore 64 и VIC 20 :
- PuCrunch [25]
- Экзомайзер [26]
- ByteBoozer [27]
Коммодор Амига
Известные компрессоры исполняемых файлов для исполняемых файлов серии Commodore Amiga :
- силовой агрегат [28]
- Кранчер Титаник [28]
- взрыватель [28]
- TNM cruncher
- Шринклер [29]
- PackFire [30]
Ява
Известные исполняемые компрессоры для Java :
Файлы JAR :
- Конверт HASP
- pack200
- ProGuard
Файлы WAR :
- Конверт HASP
Скрипты JavaScript
К скриптам JavaScript можно применить два типа сжатия :
- Уменьшите избыточность в скрипте (удалив комментарии, пробелы и сократите имена переменных и функций). Это не меняет поведения сценария.
- Сожмите исходный сценарий и создайте новый сценарий, содержащий код распаковки и сжатые данные. Это похоже на сжатие двоичных исполняемых файлов.
Компрессоры с самораспакованием
Они сжимают исходный сценарий и выводят новый сценарий с декомпрессором и сжатыми данными.
- JsSfx
- Упаковать
Компрессоры с уменьшением избыточности
Они удаляют пробелы, удаляют комментарии и сокращают имена переменных и функций, но не изменяют поведение скрипта.
- Упаковщик
- Компрессор YUI
- Термоусадочный
- JSMin
Смотрите также
- Сжатие данных
- Сжатие диска
- Сжатие RAM
- Исполняемый
- Колмогоровская сложность
- Самораспаковывающийся архив
Рекомендации
- ^ Гилен, Пьер; Тейлор, Джонатан (1997) [1993]. Логан, Росомаха (ред.). «Справочное руководство PMarc» . Архивировано 22 апреля 2019 года . Проверено 22 февраля 2019 .
[…] PMEXE.CPM […] - это модуль […] в сочетании с PMARC […], используемый для создания исполняемых сжатых файлов COM (как LZEXE или PKLITE […] типа: PMARC
.COM = PMEXE2.CPM) <имя файла> [параметры] Имя архива должно быть .COM […], а не .PMA. Выходной файл будет иметь расширение .CPM. Это COM-файл MSX-DOS […] переименуйте файл […], чтобы запустить его [ …] - ^ «Экспертный отчет Роберта Б.К. Дьюара в ответ на отчет Кеннета Д. Крюса». Cambridge University Press и др. Против Паттона и др., Filing 124, Supplemental Initial Disclosures by Cambridge University Press, Oxford University Press, Inc., Sage Publications, Inc. - Cambridge University Press, Oxfort University Press, Inc. и Sage Publications, Inc. против Марка П. Беккера, президента Университета штата Джорджия, и др., Гражданский иск № 1: 08-CV-1425-ODE (судебный документ). Окружной суд США Северного округа Джорджии, Атланта. п. 18. Приложение A. Архивировано 1 мая 2018 года . Проверено 23 апреля 2019 .
[…] SPACEMAKER и TERMULATOR, стандартное программное обеспечение для IBM PC ( утилита сжатия файлов PC DOS и эмулятор VT-100 ), продаваемое Realia, Inc. RBK Dewar (1982–1983), язык ассемблера 8088, 8000 строк […]
- ^ Realia, Inc. (январь 1983 г.). «Если вы используете DOS, вам нужна эта программа» . Журнал ПК (реклама). Издательство Ziff-Davis . 2 (9): 417. Архивировано 22 апреля 2019 года . Проверено 22 апреля 2019 .
- ^ а б Дьюар, Роберт Берридейл Кейт (1984-03-13). «DOS 3.1 ASMB (еще одна глупая ошибка Microsoft)» . [email protected] . Архивировано 01 мая 2018 года . Проверено 23 апреля 2019 .
[…] Параметр / E компоновщика должен генерировать EXE-файл, который логически эквивалентен несжатому EXE-файлу. Текущая версия […] приводит к затиранию AX. AX при входе в EXE-файл имеет определенное значение (он указывает правильность диска для параметров), поэтому он должен быть передан в несжатый образ. Учитывая это одно очень очевидное нарушение правил интерфейса, могут быть и другие, я не стал исследовать дальше […] Я написал программу Realia SpaceMaker, которая делает то же самое, что и опция EXEPACK (но, разумеется, делает нет этого конкретного […]
- ^ а б Пол, Матиас Р. (2002-10-07) [2000]. «Re: masm .com (PSP), связанная с проблемой» . Группа новостей : alt.lang.asm . Архивировано 3 сентября 2017 года . Проверено 3 сентября 2017 .}
- ^ Некасек, Михал (30.04.2018). "Realia SpaceMaker" . OS / 2 Музей . Архивировано 27 января 2019 года . Проверено 22 февраля 2019 .
- ^ Парсонс, Джефф (2019-01-10). «Обновление ранних версий Norton Utilities» . PCjs . Архивировано 29 января 2019 года . Проверено 22 февраля 2019 .
- ^ Некасек, Михал (12.01.2019). «Ага, это сделал Нортон» . OS / 2 Музей . Архивировано 22 апреля 2019 года . Проверено 22 апреля 2019 .
- ^ а б Некасек, Михал (23.03.2018). "EXEPACK и ворота A20" . OS / 2 Музей . Архивировано 13 ноября 2018 года . Проверено 20 апреля 2019 .
- ^ Майлз, Яаков; Натер, Эд (1986-05-17) [1986-02-05, 1986-02-09]. «Недокументированный параметр Microsoft LINK: / E» . Список рассылки INFO-IBMPC . Архивировано 01 мая 2018 года . Проверено 26 апреля 2019 .
[Майлз:] Существует недокументированный […] переход на Microsoft LINK.EXE […], который вызывает автоматическое сжатие во время привязки. Этот процесс устранит хранение неинициализированных массивов из файла .EXE, созданного компоновщиком […] Чтобы использовать эту функцию, укажите параметр / E в командной строке […] [Nather:] Этот параметр не существует в версиях MS Link 3.00 и 3.01 [Мили:] Сравнивая размеры (упакованных) файлов, созданных из LINK версии 3.02 и параметра / E, с размером файла .EXE, вручную упакованного с помощью […] EXEPACK, я пришел к выводу, что LINK версии 3.02, параметр / E создает файл ТОЧНО такого же размера, как при ручном запуске EXEPACK для обычного файла .EXE, выводимого с помощью LINK […]
- ^ Беллард, Фабрис (09.02.2003). "Домашняя страница LZEXE" . bellard.org . Архивировано 24 марта 2019 года . Проверено 18 марта 2019 .
- ^ а б в Саломон, Дэвид (2000) [1998]. «Глава 3.22: Компрессоры EXE» . Сжатие данных: полный справочник (2-е изд.). Springer-Verlag . п. 212. DOI : 10.1007 / 978-3-642-86092-8 . ISBN 978-3-540-78086-1. S2CID 35889155 . Проверено 26 апреля 2019 .
- ^ Пол, Матиас Р. (11 апреля 2002 г.). «Re: [fd-dev] ОБЪЯВЛЕНИЕ: CuteMouse 2.0 alpha 1» . freedos-dev . Архивировано 21 февраля 2020 года . Проверено 21 февраля 2020 .
[…]> Ни один упаковщик не может упаковывать такие комбо, как .SYS + .COM или .SYS + .EXE. […] Существуют упаковщики для .COM или .EXE и другие для .SYS, но я тоже не видел упаковщика, который поддерживал бы оба в одном . […] Возможность объединить программу / TSR и драйвер устройства в файлах .EXE […] и программу / TSR.COM и драйвер устройства в программу .COM […] Также возможно добавить еще одну самодельную заглушку в файл, после того как он уже был сжат […] все сжатые драйверы устройств DR-DOS используют аналогичную технику, позволяющую обычному декомпрессору PKLITE .COM работать с файлами .SYS (между тем PKLITE поддерживает аналогичную функцию для самих файлов .SYS ). […]
(NB. PKLITE 1.50 (1995) и выше получил возможность сжимать драйверы устройств, но не объединенные драйверы COM + SYS.) - ^ https://code.google.com/archive/p/mz-explode/
- ^ «Архивная копия» . Архивировано из оригинала на 2013-08-21 . Проверено 6 мая 2013 .CS1 maint: заархивированная копия как заголовок ( ссылка )
- ^ a b http://www.enigmaprotector.com/en/downloads/changelog.html
- ^ а б http://webtoolmaster.com/news.xml
- ^ https://web.archive.org/web/20040525022811/http://www.xtreeme.prv.pl/
- ^ https://www.pelock.com/products/netshrink/download
- ^ https://www.obsidium.de/show/download
- ^ https://www.pelock.com/products/pelock/download
- ^ http://sed.free.fr/624/
- ^ DotProtect http://site.yvansoftware.be/dotpacker1_0 Архивировано 22 января 2011 г. на Wayback Machine
- ^ Киене, Стив; Марк, Дэйв (1999). «Беседа со Стивом Киеном» . MacTech . Vol. 15 ч. 4 . Проверено 10 декабря 2017 .
- ^ https://web.archive.org/web/20140730211711/http://www.cs.tut.fi/~albert/Dev/pucrunch/
- ^ web.comhem.se/~u13114991/exo/
- ^ https://csdb.dk/release/?id=33093
- ^ а б в http://www.amiga-stuff.com/crunchers-download.html
- ^ https://github.com/askeksa/Shrinkler
- ^ http://www.pouet.net/prod.php?which=54840