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

Программы-упаковщики - это разновидность архиваторов, которые сжимают исполняемые файлы (.exe), динамически подсоединяемые библиотеки (.dll) и др. с сохранением их полной работоспособности в упакованном состоянии. Другими словами, если вы запакуете "экзешник", то он уменьшится в размере и, что немаловажно, не перестанет быть "экзешником". Т.е. его можно будет запускать на выполнение, как если бы он вообще не подвергался действиям подобных утилит.

Упаковщики работают так же, как и архиваторы, за одним лишь исключением - они помещают процедуру распаковки (decompression procedure) в начало программы, которую только что сжали.

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

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

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


PECompact v2.76

Линк: www.bitsum.com/files/pec2setup.zip

Размер: 1,3 Mb

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

Утилита PECompact предназначена для сжатия файлов .exe, .dll, .scr с помощью многочисленных алгоритмов, которые доступны в меню Файл -> Изменить установки... -> Выбрать кодеки. В программе предусмотрена возможность выбора компонентов файлов, которых не следует подвергать компрессии (иконки, курсоры, шрифты и др.), а также функция оптимизации структуры файла, которая позволит без сжатия уменьшить его размер (опция "Trim Only"). Кроме того, PECompact имеет русскоязычный интерфейс и консольную версию - pec2.exe. Также позволяет работать с несколькими файлами сразу.


ASPack v2.12

Линк: www.aspack.com/files/aspack212.zip

Размер: 300 Kb

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

Упаковщик ASPack прост в использовании и, благодаря мощному алгоритму, позволяет добиться 40-70% сжатия для 32-битных приложений Windows. Поддерживаемые файлы: .exe, .dll, .ocx, .dpl, .bpl (файлы библиотек Delphi). Программа может проверить перед окончательной упаковкой функциональность exe-файла и, при нарушении его нормальной работы, отменить сжатие. Для любознательных: ASPack был написан в Borland Delphi 2.0. Русский язык поддерживается.


UpxVis v1.8

Линк: amis.h11.ru/files/rar/upxvis.rar

Размер: 350 Kb

Распространение: freeware

UPX (the Ultimate Packer for eXecutables) - быстрый упаковщик, работающий в консольном режиме и позволяющий достичь высоких коэффициентов сжатия. Также может выполнять декомпрессию. Поддерживаемые форматы файлов: exe, sys, com, pe (Win32), 386 (Linux) и др. Для UPX написано множество оболочек, значительно повышающих удобство работы с утилитой. Одной из них является UpxVis v1.8. В отличие от классического UPX, программа позволяет устанавливать защиту от декомпрессии и умеет упаковывать dll. Русский язык присутствует.


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

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

Во время тестирования преследуется цель максимально уменьшить размер выходного файла без увеличения времени его распаковки. Для этого в PECompact был выбран алгоритм FFCE, обеспечивающий хорошее сжатие и малое время запуска упакованного файла и установлен максимальный уровень сжатия (9). Остальные настройки - по умолчанию. В настройках ASPack были включены пункты "Сжимать ресурсы" и "Максимальное сжатие", а в UpxVis вместе с упаковкой ресурсов была установлена максимальная степень компрессии (10). Помните, что в ASPack и PECompact параметры упаковки нужно задавать для каждого файла в отдельности


Результаты

По итогам тестирования можно заключить, что все упаковщики справились с предложенной задачей достойно. Самый большой коэффициент сжатия продемонстрировал 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 - - -

Однако программа вопреки справке UpxVis отказалась работать с dll и файлами с оверлеем (Test2.exe). PECompact допустил один промах: библиотека под кодовым именем Test1.dll, за которой скрывается файл mfc71.dll (необходим для работы программ, написанных в среде Microsoft Visual Studio .NET 2003), была испорчена. После упаковки все файлы запускались не медленнее, чем до нее.

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


Выводы

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

Narthex

Версия для печатиВерсия для печати

Номер: 

12 за 2006 год

Рубрика: 

Software
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!

Комментарии

Аватар пользователя Алексей
очень нужная статья,- подробная,развёрнутая...