чем сжать exe файл

Сравнение популярных упаковщиков

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

Где находят применение упаковщики, или, как их часто называют, пакеры? Конечно, их используют программисты, чтобы уменьшить размер написанных файлов, ускорить их запуск и защитить от взлома. Но и крекеры (взломщики) не обходят эти программы стороной, создавая декомпрессоры для популярных упаковщиков и внося, таким образом, свою лепту в развитие технологий защиты данных. 🙂 Что касается обычных пользователей, то упаковщик всегда поможет переслать исполняемый файл по почте, разместить в интернете или записать на информационный носитель небольшой емкости, например, дискету. Процедура распаковки занимает считанные байты, поэтому упакованные exe-файлы имеют почти такой же размер, что и заархивированные, однако, как вы понимаете, не требуют для запуска дополнительного ПО, что тоже удобно.

Чтобы определить, в каких случаях и какими программами лучше пользоваться, я предлагаю провести сравнительный анализ. Итак, в сегодняшнем шоу принимают участие следующие известные пакеры.

Распространение: shareware (14 дней опробования)

Распространение: shareware (30 дней опробования)


Подготовка к тестированию

Для качественного сравнения работы программ-упаковщиков были выбраны (случайным образом) исполняемые файлы (.exe) и динамически подсоединяемые библиотеки (.dll) известных приложений, а также мои программы, написанные в Delphi и Visual C++. Сравнение будет проходить по следующим критериям: размер упакованного файла, время компрессии и время декомпрессии, работоспособность файла после сжатия.

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

Результаты тестирования упаковщиков
Файлы Исходный размер Размер после упаковки Время упаковки Коэффициент сжатия
PECompact v2.76
Delphi.exe 624 Kb 261 Kb 2 c 58%
C.exe 234 Kb 45 Kb 3 c 80%
Test1.exe 1,7 Mb 756 Kb 30 c 54%
Test2.exe 10 Mb 4 Mb 10 мин 62%
Test1.dll 1 Mb 451 Kb 20 c 57%
Test2.dll 1.5 Mb 703 Kb 15 c 55%
ASPack v2.12
Delphi.exe 624 Kb 251 Kb 10 c 60%
C.exe 234 Kb 46 Kb 3 c 81%
Test1.exe 1,7 Mb 868 Kb 5 c 47%
Test2.exe 10 Mb 3,8 Mb 3 мин 64%
Test1.dll 1 Mb 960 Kb 2 c 10%
Test2.dll 1.5 Mb 739 Kb 17 c 53%
UpxVis v1.8
Delphi.exe 624 Kb 253 Kb 8 c 60%
C.exe 234 Kb 43 Kb 7 c 83%
Test1.exe 1,7 Mb 737 Kb 15 c 57%
Test2.exe 10 Mb
Test1.dll 1 Mb
Test2.dll 1.5 Mb

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

Упаковщик UPX с оболочкой UpxVis показал наилучшее сжатие исполняемых файлов (.exe). Учитывая то, что программа распространяется бесплатно, можно сказать, что для упаковки «экзешников» целесообразнее применять именно ее. Если UPX что-то не сможет сделать хорошо, то он вам об этом непременно сообщит. Для сжатия dll и файлов с оверлеем (не установочных!) лучше использовать ASPack, т.к. он работает надежнее и быстрее. Я, скорее всего, выберу именно его. А PECompact подкупает лишь возможностью выбора кодеков, с которыми можно поэкспериментировать на досуге. Он сжимает почти так же, как и ASPack, только иногда тратит на это больше времени.

Читайте также:  чем склеить рану на коже

Источник

Документация / Программы

Последняя модификация: 15.02.2018 г

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

Утилиты сжатия исполняемых файлов, позволяют сжимать драйвера и программы так, что их запуск не требует предварительной распаковки. Принцип их действия аналогичен действию обычных архиваторов: сжимаемая программа снабжается SFX-заголовком, который при запуске, распаковывает ее в память и передает ей управление – поэтому разработчики архиваторов, зачастую являются и разработчиками утилит сжатия программ. Примером тому случат архиватор PkZip и утилита PkLite, архиватор Ain и утилита AinExe, Архиватор Uc и утилита UcExe. Однако механизм действия утилит сжатия программ несколько иной – одно дело распаковать на диск, другое дело распаковать в память, да так, чтобы программа себя нашла. Тут требуется и большая квалификация, и большая изобретательность. Поэтому они не так многочисленны как обычные архиваторы.

Различные типы программ имеют различную структуру. Устройство Com-файла существенно отличается от устройства Exe-файла. При этом Exe-файлы и сами не однородны. Они делятся на 32-битные программы для Windows, 16-битные программы для Windows и программы для DOS. Для каждой из этих структур используется собственный алгоритм сжатия и утилиты, обрабатывающие одни типы, могут не признавать другие. В частности, утилиты предназначенные для упаковки программ DOS, не сжимают программы Windows, и наоборот.

Кроме того, exe-файлы могут содержать, так называемые, оверлейные данные – данные, не считываемые в память при загрузке программы, а загружаемые только по мере необходимости. В зависимости от метода присоединения оверлеев и их назначения, содержащая их программа, после сжатия, частично или полностью может потерять работоспособность. В основном используется наиболее простой механизм прямого считывания данных по их физическому размещению в файле программы. После сжатия этот механизм не работает, поскольку данные меняют адресацию и, загрузчик оверлеев не находит их на прежнем месте. Иногда используется более интеллектуальный метод поиска оверлеев по специальным меткам, позволяющий корректно загружать оверлеи, даже если они были перемещены. Использующие его программы не теряют работоспособность и после сжатия, но разработчики программ редко об этом заботятся. В любом случае, основная масса утилит сжатия распознает оверлеи и выдает