Исполняемое сжатие
Эта статья нуждается в дополнительных цитатах для проверки . ( февраль 2024 г. ) |
Сжатие исполняемого файла — это любой способ сжатия файла исполняемого и объединения сжатых данных с кодом распаковки в один исполняемый файл. Когда этот сжатый исполняемый файл выполняется, код распаковки воссоздает исходный код из сжатого кода перед его выполнением. В большинстве случаев это происходит прозрачно, поэтому сжатый исполняемый файл можно использовать точно так же, как и оригинал. Компрессоры исполняемых файлов часто называют упаковщиками исполняемых файлов , упаковщиками времени выполнения , упаковщиками программного обеспечения , защитными средствами программного обеспечения или даже « полиморфными упаковщиками » и « инструментами запутывания ».
Сжатый исполняемый файл можно рассматривать как самораспаковывающийся архив , где сжатый исполняемый файл упаковывается вместе с соответствующим кодом распаковки в исполняемый файл. Некоторые сжатые исполняемые файлы можно распаковать для восстановления исходного файла программы без непосредственного выполнения. Для этого можно использовать две программы: CUP386 и UNP. [ нужна ссылка ]
Большинство сжатых исполняемых файлов распаковывают исходный код в памяти, и большинству из них требуется немного больше памяти для запуска (поскольку им необходимо хранить код распаковщика, сжатые данные и распакованный код). Более того, к некоторым сжатым исполняемым файлам предъявляются дополнительные требования, например, требования к записи распакованного исполняемого файла в файловую систему перед его выполнением.
Сжатие исполняемых файлов не ограничивается двоичными исполняемыми файлами, но также может применяться к сценариям, таким как JavaScript . Поскольку большинство языков сценариев предназначены для работы с удобочитаемым кодом , который имеет высокую избыточность , сжатие может быть очень эффективным и таким же простым, как замена длинных имен, используемых для идентификации переменных и функций, более короткими версиями и/или удаление пробелов .
Преимущества и недостатки
[ редактировать ]Распространители программного обеспечения используют сжатие исполняемых файлов по разным причинам, в первую очередь для уменьшения требований к вторичной памяти для своего программного обеспечения; поскольку компрессоры исполняемых файлов специально разработаны для сжатия исполняемого кода, они часто обеспечивают лучшую степень сжатия , чем стандартные средства сжатия данных , такие как gzip , zip или bzip2. [ нужна ссылка ] . Это позволяет распространителям программного обеспечения оставаться в рамках ограничений выбранного ими носителя распространения (например, CD-ROM , DVD-ROM или дискеты ) или сократить время и пропускную способность, необходимые клиентам для доступа к программному обеспечению, распространяемому через Интернет .
Сжатие исполняемого файла также часто используется для предотвращения обратного проектирования или для сокрытия содержимого исполняемого файла (например, чтобы скрыть наличие вредоносного ПО от антивирусных сканеров ) с помощью запатентованных методов сжатия и/или дополнительного шифрования . Сжатие исполняемых файлов можно использовать для предотвращения прямой дизассемблирования , маскировки строковых литералов и изменения сигнатур. Хотя это не исключает возможности обратного проектирования, это может сделать процесс более дорогостоящим.
Сжатый исполняемый файл требует меньше места в файловой системе, а значит, меньше времени на передачу данных из файловой системы в память. С другой стороны, перед началом выполнения требуется некоторое время для распаковки данных. Однако скорость различных носителей информации не соответствует средней скорости процессора, поэтому хранилище очень часто является узким местом. Таким образом, сжатый исполняемый файл будет загружаться быстрее в большинстве распространенных систем. На современных настольных компьютерах это редко заметно, если только исполняемый файл не является необычно большим, поэтому скорость загрузки не является основной причиной за или против сжатия исполняемого файла.
В операционных системах, которые по требованию выгружают исполняемые образы с диска, сжатые исполняемые файлы делают этот процесс менее эффективным. Заглушка декомпрессора выделяет блок памяти для хранения распакованных данных, который остается выделенным до тех пор, пока исполняемый файл остается загруженным, независимо от того, используется он или нет, постоянно конкурируя за ресурсы памяти с другими приложениями. Если операционная система использует файл подкачки, распакованные данные необходимо записать в него, чтобы освободить память, вместо того, чтобы просто удалять неиспользуемые блоки данных и при необходимости повторно загружать их из исполняемого образа. Обычно это незаметно, но становится проблемой, когда исполняемый файл загружается более одного раза одновременно: операционная система не может повторно использовать уже загруженные блоки данных, данные необходимо распаковать в новый блок памяти, и они будут быть заменены независимо, если они не используются. Дополнительные требования к хранилищу и времени означают, что необходимо тщательно взвесить, следует ли сжимать исполняемые файлы, которые обычно запускаются более одного раза одновременно.
Еще одним недостатком является то, что некоторые утилиты больше не могут идентифицировать зависимости библиотеки времени выполнения , поскольку только статически связанная видна заглушка экстрактора.
Кроме того, некоторые старые антивирусные сканеры просто сообщают обо всех сжатых исполняемых файлах как о вирусах , поскольку заглушки декомпрессора имеют с ними некоторые общие характеристики. Большинство современных антивирусных сканеров могут распаковывать несколько различных уровней сжатия исполняемого файла, чтобы проверить фактический исполняемый файл внутри, но у некоторых популярных антивирусных и антивирусных сканеров возникают проблемы с ложными срабатываниями сигналов тревоги на сжатых исполняемых файлах. В попытке решить проблему вредоносного ПО , замаскированного с помощью упаковщиков времени выполнения, группа безопасности IEEE Industry Connections представила систему программных тегов .
Исполняемое сжатие было более популярным, когда компьютеры были ограничены емкостью гибких дисков , которые были медленными носителями малой емкости, а также небольшими жесткими дисками ; это позволяло компьютеру хранить больше программного обеспечения на том же пространстве без необходимости вручную распаковывать архивный файл каждый раз, когда пользователь хотел использовать программное обеспечение. Однако сжатие исполняемых файлов стало менее популярным из-за увеличения емкости памяти на компьютерах. Он используется на демосцене , где демо-версии должны оставаться в пределах размера, например, вступление 64k . Только очень сложные форматы сжатия, которые увеличивают время загрузки, сохраняют исполняемый файл достаточно маленьким, чтобы участвовать в этих соревнованиях.
Список исполняемых упаковщиков
[ редактировать ]Исполняемый файл CP/M и MSX-DOS
[ редактировать ]Известные исполняемые компрессоры для CP/M-80 / MSX-DOS файлов .COM :
- PMexe (с 1990 года, автор Ёсихико Мино, PMARC.COM+PMEXE.CPM, подпись «-pms-») [1]
- ПопКом! (с 1992 года, автор Ёсихико Мино, POPCOM.COM, подпись "-pc1-")
Исполняемый файл MS-DOS
[ редактировать ]Известные исполняемые компрессоры для MS-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 Software RJCRUSH (с 1994 г., автор Роланд Скиннер, RJCRUSH.EXE)
- XPA (с 1995 г., автор ДжауМинг Ценг, XPA.EXE)
- Ibsen Software aPACK (с 1997 г., автор Йорген Ибсен, APACK.EXE)
- UPX (с 1998 года, авторы Маркус FXJ Оберхумер и Ласло Мольнар)
- 32LiTE (с 1998 года, автор Олег Прохоров, 32LITE.EXE)
- Компрессор Knowledge Dynamics LZW [14]
- WWpack (с 1994 года, авторы: Петр Варежак и Рафал Вержбицкий, WWPACK.EXE)
- 624 (только для файлов .COM размером менее 25 КБ, используется LZW )
- АЙНЕКСЕ
- АвПак
- КомПАК
- Конверт HASP
- ЛГЛЗ
- ПМВЛАЙТ
- ПроПак
- UCEXE
- ВДОСКС
- МАШИНА
- XPack
Исполняемый файл OS/2
[ редактировать ]Известные компрессоры исполняемых файлов под OS/2 :
- НеЛайт
- LxLite
Новый исполняемый файл
[ редактировать ]Известные компрессоры исполняемых файлов для новых исполняемых файлов :
- ПакВин
- PKWare PKLite (начиная с версии 2.01)
- ВинЛайт
Портативный исполняемый файл
[ редактировать ]Известные компрессоры исполняемых файлов для портативных исполняемых файлов :
Примечание. Клиенты, выделенные фиолетовым цветом, больше не находятся в разработке.
Имя | Последняя стабильная версия | Лицензия на программное обеспечение | x86-64 поддержка |
---|---|---|---|
32Лайт | |||
Алиенизе | 1.4 (17 августа 2020 г. | )Собственный | Нет |
Ипакет2 | |||
Броненосец | 9,62 (7 июня 2013 г. | )Собственный | Да |
АСПак | 2,40 (7 декабря 2018 г. | )Собственный | Да |
АСПР (АСПротект) | 2,78 (7 декабря 2018 г. | )Собственный | Да |
BeRoEXEPacker | |||
BIN-шифрование | |||
Упаковщик BoxedApp | 3.3 (26 июля 2015 г. | )Собственный | Да |
CExe | 1.0b (20 июля 2001 г. | )лицензия GPL | Нет |
Кринклер | 2.3 (22 июля 2020 г. | )Злиб | Да |
точкаBundle | 1.3 (4 апреля 2013 г. [15] | )Собственный | Да |
Загадочный защитник | 6.60 (21 августа 2019 г. [16] | )Собственный | Да |
Виртуальный ящик Энигмы | 9.40 (10 октября 2019 г. [16] | )Собственный | Да |
exe32pack | |||
EXE-пакет | 3.11 (7 января 2011 г. [17] | )Собственный | ? |
EXECryptor | |||
EXE Стелс | 4.14 (29 июня 2011 г. [17] | )Собственный | ? |
Экспрессор | 1.8.0.1 (14 января 2010 г. | )Собственный | ? |
ФСГ | 2.0 (24 мая 2004 г. [18] | )Бесплатное ПО | Нет |
kkrunchy источник | 0.23a4 (Неизвестно) | Общественное достояние | Нет |
МЯВ | 1.1 (Неизвестно) | Бесплатное ПО | Нет |
МПРЕСС | 2,19 (2 января 2012 г. | )Бесплатное ПО | Да |
МуКранчер | |||
НеоЛайт | |||
НсПак | |||
Осада | 1.6 (11 апреля 2017 г. [19] | )Собственный | Да |
PEКомпактный | |||
ПЕПак | |||
PESpin | 1,33 (3 мая 2011 г. | )Бесплатное ПО | Да |
Маленький | 2.4 (22 сентября 2016 г. | )Бесплатное ПО | Нет |
ПКЛайт32 | |||
РЛПак Базовый | 1.21 (31 октября 2008 г. | )лицензия GPL | Нет |
Шринкер32 | |||
Смарт Пакер Про X | 2.0.0.1 (3 июня 2019 г. | )Собственный | Да |
Темида/WinLicense | 3.0 (24 октября 2019 г. | )Собственный | Да |
Упаковать | |||
УПХ | 3,96 (23 января 2020 г. | )лицензия GPL | экспериментальный |
ВМПротект | 3.4 (3 августа 2019 г. | )Собственный | Да |
WWPack32 | 1.20 (19 июня 2000 г. | )Нет | |
XComp/XPack | 0,98 (18 февраля 2007 г. | )Бесплатное ПО | Нет |
Склеп Йоды | |||
YZPack |
ELF-файлы
[ редактировать ]Известные исполняемые компрессоры для файлов ELF :
- gzexe (использует заглушку сценария оболочки и gzip , работает в большинстве Unix-подобных систем)
- Конверт HASP
- УПХ
- 624 (для Linux/386) [20]
Файлы сборки CLI
[ редактировать ]Известные исполняемые компрессоры для файлов сборки CLI :
- .СЕТЬ
- НсПак
- Мпресс
- Конверт HASP
- точкаBundle
- Exepack.NET
- ДотПротект: [21] Коммерческий протектор/упаковщик для .net и mono. Особенности онлайн-проверок и «стандартного шифрования».
Классические приложения Mac OS
[ редактировать ]Исполняемые компрессоры для Mac OS Classic приложений :
- Приложение ВИЗЕ [22]
- Установщик StuffIt
Файлы Mach-O (Apple Mac OS X)
[ редактировать ]Известные исполняемые компрессоры для файлов Mach-O (Apple Mac OS X):
- Конверт HASP
- УПХ
- ВМПротект
Коммодор 64 и ВИК-20
[ редактировать ]Известные компрессоры исполняемых файлов на Commodore 64 и VIC-20 :
Амига
[ редактировать ]Известные компрессоры исполняемых файлов для исполняемых файлов серии Amiga :
Ява
[ редактировать ]Известные компрессоры исполняемых файлов для Java :
JAR- файлы:
- Конверт HASP
- упаковка200
- ПроГард
ВАР -файлы:
- Конверт HASP
JavaScript
[ редактировать ]можно применять два типа сжатия К сценариям JavaScript :
- Уменьшите избыточность в скрипте (удалив комментарии, пробелы и сократив имена переменных и функций). Это не меняет поведение скрипта.
- Сожмите исходный сценарий и создайте новый сценарий, содержащий код распаковки и сжатые данные. Это похоже на сжатие двоичного исполняемого файла.
Самодекомпрессионные компрессоры
[ редактировать ]Они сжимают исходный сценарий и выводят новый сценарий с распаковщиком и сжатыми данными.
- JsSfx
- Упаковать
Компрессоры, снижающие резервирование
[ редактировать ]Они удаляют пробелы, комментарии и сокращают имена переменных и функций, но не изменяют поведение сценария.
- Пакер
- YUI компрессор
- термоусадочный
- JSMin
См. также
[ редактировать ]- Сжатие диска
- Сжатие оперативной памяти
- Колмогоровская сложность
- Самомодифицирующийся код
- Самоперемещающийся код
- Самораспаковывающийся архив
- Самозагружающийся диск
Ссылки
[ редактировать ]- ^ Гилен, Пьер; Тейлор, Джонатан (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 и др. против Паттона и др., Заявление 124, Дополнительные первоначальные раскрытия информации от 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. РБК Дьюар (1982–1983), язык ассемблера 8088, 8000 строк […]
- ^ Realia, Inc. (январь 1983 г.). «Если вы используете DOS, вам нужна эта программа» . Журнал ПК (реклама). 2 (9). Ziff-Davis Publishing : 417. Архивировано из оригинала 22 апреля 2019 г. Проверено 22 апреля 2019 г.
- ^ Перейти обратно: а б Дьюар, Роберт Берридейл Кейт (13 марта 1984 г.). «DOS 3.1 ASMB (еще одна глупая ошибка Microsoft)» . [электронная почта защищена] . Архивировано из оригинала 01 мая 2018 г. Проверено 23 апреля 2019 г.
[…] Параметр /E компоновщика должен генерировать EXE-файл, который логически эквивалентен несжатому EXE-файлу. Текущая версия […] приводит к сбою AX. AX при входе в EXE-файл имеет определенное значение (оно указывает на достоверность параметров диска), поэтому его следует передать в несжатый образ. Учитывая это одно очень очевидное нарушение правил интерфейса, могут быть и другие, я не удосужился продолжить расследование […] Я написал программу Realia SpaceMaker, которая делает то же самое, что и опция EXEPACK (но, разумеется, делает ли это не иметь этого конкретного […]
- ^ Перейти обратно: а б Пол, Матиас Р. (07.10.2002) [2000]. «Re: Проблемы, связанные с masm.com (PSP)» . Группа новостей : alt.lang.asm . Архивировано из оригинала 3 сентября 2017 г. Проверено 3 сентября 2017 г. }
- ^ Некасек, Михал (30 апреля 2018 г.). «Реалия Космосмейкер» . Музей OS/2 . Архивировано из оригинала 27 января 2019 г. Проверено 22 февраля 2019 г.
- ^ Парсонс, Джефф (10 января 2019 г.). «Обновление ранних утилит Norton» . ПКджс . Архивировано из оригинала 29 января 2019 г. Проверено 22 февраля 2019 г.
- ^ Некасек, Михал (12 января 2019 г.). «Да, это сделал Нортон» . Музей OS/2 . Архивировано из оригинала 22 апреля 2019 г. Проверено 22 апреля 2019 г.
- ^ Перейти обратно: а б Некасек, Михал (23 марта 2018 г.). «EXEPACK и ворота А20» . Музей OS/2 . Архивировано из оригинала 13 ноября 2018 г. Проверено 20 апреля 2019 г.
- ^ Майлз, Яаков; Натер, Эд (17 мая 1986 г.) [05 февраля 1986 г., 9 февраля 1986 г.]. «Недокументированный параметр 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, я пришел к выводу, что Параметр /E LINK версии 3.02 генерирует ТОЧНО тот же размер файла, что и запуск EXEPACK вручную для обычного файла .EXE, выводимого с помощью LINK […]
- ^ Беллард, Фабрис (9 февраля 2003 г.). «Домашняя страница LZEXE» . Bellard.org . Архивировано из оригинала 24 марта 2019 г. Проверено 18 марта 2019 г.
- ^ Перейти обратно: а б с Саломон, Дэвид (2000) [1998]. «Глава 3.22: Компрессоры EXE» . Сжатие данных: Полный справочник (2-е изд.). Спрингер-Верлаг . п. 212. дои : 10.1007/978-3-642-86092-8 . ISBN 978-3-540-78086-1 . S2CID 35889155 . Архивировано из оригинала 7 апреля 2022 г. Проверено 26 апреля 2019 г.
- ^ Пол, Матиас Р. (11 апреля 2002 г.). «Re: [fd-dev] АНОНС: CuteMouse 2.0 альфа 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). ). […]
(Примечание. PKLITE 1.50 (1995) и выше получили возможность сжимать драйверы устройств, но не комбинированные драйверы COM+SYS.) - ^ «Архив кода Google — долгосрочное хранилище для хостинга проектов Google Code» . Архивировано из оригинала 3 декабря 2021 г. Проверено 7 апреля 2022 г.
- ^ «DotBundle — Загрузите ознакомительную версию» . Архивировано из оригинала 21 августа 2013 г. Проверено 6 мая 2013 г.
- ^ Перейти обратно: а б «Защита программного обеспечения, лицензирование программного обеспечения, виртуализация программного обеспечения» . Архивировано из оригинала 13 марта 2018 г. Проверено 12 марта 2018 г.
- ^ Перейти обратно: а б «Новости программного обеспечения WebtoolMaster» . Архивировано из оригинала 20 июля 2020 г. Проверено 15 января 2012 г.
- ^ «Архивная копия» . www.xtreeme.prv.pl . Архивировано из оригинала 25 мая 2004 г. Проверено 15 января 2022 г.
{{cite web}}
: CS1 maint: архивная копия в заголовке ( ссылка ) - ^ «Загрузить | Система защиты программного обеспечения Obsidium» . Архивировано из оригинала 07 февраля 2019 г. Проверено 18 апреля 2017 г.
- ^ «624» .
- ^ DotProtect http://site.yvansoftware.be/dotpacker1_0 . Архивировано 22 января 2011 г. на Wayback Machine.
- ^ Киене, Стив; Марк, Дэйв (1999). «Разговор со Стивом Кином» . МакТех . Том. 15, нет. 4. Архивировано из оригинала 10 декабря 2017 г. Проверено 10 декабря 2017 г.
- ^ «Программа сжатия данных без потерь: Hybrid LZ77 RLE» . www.cs.tut.fi. Архивировано из оригинала 30 июля 2014 г. Проверено 15 января 2022 г.
- ^ web.comhem.se/~u13114991/exo/
- ^ «БайтБузер (ПК)» . Архивировано из оригинала 15 августа 2022 г. Проверено 7 апреля 2022 г.
- ^ Перейти обратно: а б с «Кранчеры для скачивания» .
- ^ «Аскекса/Шринклер» . Гитхаб . 25 сентября 2021 г. Архивировано из оригинала 7 апреля 2022 г. Проверено 7 апреля 2022 г.
- ^ «PackFire v1.2k от Neural» . Архивировано из оригинала 30 июня 2024 г. Проверено 7 апреля 2022 г.