04. Плагины-кодеки

 

PECompact v2.x - документация
 

 


На фоне других аналогичных утилит уникальность программы PECompact2 в том, что она позволяет использовать кодеки (алгоритмы кодирования/декодирования) сторонних разработчиков, причём для обработки одного файла разрешается применять любое количество кодеков. Например, можно воспользоваться кодеками LZMA и CRC для: 1) сжатия данных, 2) выполнения проверки CRC.

В дистрибутив PECompact2 входит несколько кодеков для сжатия, шифрования и других целей. Некоторые из них доступны только в коммерческой (зарегистрированной) версии PECompact2.

Какие имеются кодеки для PECompact?
В какой последовательности применять кодеки?
Как узнать, какой кодек нужно использовать?

Доступные кодеки

Название Имя файла Автор Тип Описание
aPLib pec2codec_aplib.dll Jørgen Ibsen Сжатие
aPLib
Высокоэффективный алгоритм сжатия с менее требовательной к ресурсам, но более медленной распаковкой, чем у FFCE, а также проигрывающий FFCE на сжатии больших файлов. Код распаковщика чуть больше, чем у FFCE.
BriefLZ pec2codec_brieflz.dll Jørgen Ibsen Сжатие
BriefLZ
Алгоритм, оптимизированный для быстрой упаковки с приемлемой степенью сжатия.
CRC32 pec2codec_crc32.dll Jørgen Ibsen Проверка целостности
CRC32
Простая проверка контрольной суммы CRC32. Если при запуске файла обнаруживается повреждение данных, об этом выводится соответствующее сообщение, и выполнение файла прекращается.
FFCE pec2codec_ffce.dll Jørgen Ibsen Сжатие
FFCE
Хорошо подходит для упаковки маленьких файлов. Это высокоэффективный алгоритм сжатия общего назначения. Хорошие результаты достигаются и на больших файлах, декомпрессор чуть меньше, чем в aPLib.
JCALG1 pec2codec_jcalg1.dll Jeremy Collake Сжатие
JCALG1
Высокоэффективный алгоритм сжатия общего назначения. Упаковка происходит медленно, но (особенно) при высоких уровнях сжатия JCALG1 на некоторых файлах может показывать лучшие результаты, чем другие кодеки.
LZMA pec2codec_lzma.dll Игорь Павлов (LZMA)
Jørgen Ibsen (кодек)
Сжатие
LZMA
Применяется по умолчанию. Это чрезвычайно эффективный алгоритм сжатия общего назначения, как правило, упаковывающий файлы заметно сильнее любых других перечисленных здесь алгоритмов.
MessageBox pec2codec_messagebox.dll Jørgen Ibsen Ввод-вывод
Вывод сообщения и запрос
При запуске выводит сконфигурированное пользователем (на этапе кодирования) окно с сообщением и действует в соответствии с ответом пользователя. Например, можно вывести окно с сообщением "Вы действительно хотите запустить эту программу?" и кнопками "Да/Нет".
Password pec2codec_password.dll Jørgen Ibsen Шифрование
с паролем
по алгоритму TEA
Выполняет шифрование файла с помощью пароля, указанного пользователем в качестве ключа. При запуске файл выдаёт запрос на ввод пароля. Если пароль введён правильно, файл распаковывается и запускается, если же нет, то работа файла прекращается.
Применяется шифрование TEA: http://www.simonshepherd.supanet.com/tea.htm .
         
 

Последовательность применения кодеков

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

Иногда имеет смысл использовать один и тот же кодек многократно, например:

  1. pec2codec_crc32
  2. pec2codec_ffce
  3. pec2codec_crc32

При таком выборе проверка CRC32 будет выполняться до и после распаковки, тем самым гарантируется, что данные, поставляемые декомпрессору, не изменялись, и данные после распаковки находятся точно в том же исходном состоянии.

Какой кодек следует использовать?

Выбор подходящего кодека зависит от размера и содержимого файла, подлежащего упаковке. Зачастую бывает, что небольшие файлы сжимаются лучше при использовании алгоритмов aPLib, FFCE или JCALG1 с их маленькими декодерами. Крупные файлы обычно лучше упаковываются алгоритмом LZMA. Поскольку при обработке крупных файлов разница в объёме между быстрым и компактным декодерами не играет существенной роли, в этом случае рекомендуется применять быстрый декодер. А вот при упаковке маленьких файлов компактный декодер часто работает не хуже, а то и лучше быстрого.

Точно определить, какой из кодеков окажется оптимальным для конкретного файла, можно только с помощью эксперимента.