Какую функцию выполняют упаковщики в компьютере

Обновлено: 03.07.2024

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

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

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

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

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


PECompact v2.76

Размер: 1,3 Mb

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

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


ASPack v2.12

Размер: 300 Kb

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

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


UpxVis v1.8

Размер: 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.

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


Выводы

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

Позволяют за счет применения специальных методов упаковки снимать файлы во внешней памяти (упаковывать, архивировать), т.е. создавать копии файлов меньшего размера. Кроме этого, они обеспечивают объединение множества таких копий в один файл, который называется архивным. Архивный файл содержит оглавление, позволяющее узнать, какие файлы в нем содержатся. Из архивного файла можно при необходимости извлечь любой файл в первоначальном виде (разархивировать, распаковать). Разные архиваторы отличаются форматом создаваемых или архивных файлов, скоростью работы, степенью сжатия файлов, удобством использования.

Наиболее распространенные архиваторы имеют приблизительно одинаковые возможности, и не один из них не превосходит другие одновременно по всем параметрам. Наиболее популярные: zip, rar, ace, lha, arj. Для них разработаны специальные оболочки, обеспечивающие их выполнение под управлением операционных систем. Например: WinZip, WinRar, WinAce для Microsoft Windows. Название архивных файлов имеют расширения, указывающий на архиватор. Обычно они совпадают (zip, rar, ace, arj). Есть исключения: направление у архивных файлов, созданных с помощью Lha расширение Lzh.

3.2.2. Вирусы и антивирусные программы.

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

Вирус может приписывать себя к другим программам (заражать их), а также выполнять различные нежелательные действия. Программа, внутри которой находится вирус, называется зараженной. Как только файл с такой программой запускается на выполнение, сначала выполняется вирус (перехватывает управление). Он находит и заражает другие программы, а также выполняет какие-либо вредные действия. Для маскировки он может так действовать не всегда, а при выполнении определенных условий (дата, время, количество запусков и др.). После того, как вирус выполнит предусмотренные в нем действия, он передает управление программе, в которой находится, и она работает как обычно.

Вирус может испортить любой файл, но заразить только файлы определенного типа:

1. Исполняемые файлы (файлы с программами) – их название имеет расширение exe, com. Вирусы, заражающие такие файлы, называются файловыми. Они наиболее распространены.

2. Загрузчик ОС и главная загрузочная запись жесткого диска. Вирусы, заражающие эти области памяти, называются загрузочными (бутовые). Такой вирус начинает выполняться при начальной загрузке ОС и становится резидентным. Распространяется он, заражая загрузочные записи, подключенные носителей информации устройств внешней памяти. Некоторые такие вирусы заражают и файлы.

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

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

Наиболее распространенные антивирусные программы:

1. Детектор (сканер) – обнаруживает зараженные файлы. Сканер производит проверку заданной области файловой структуры. Требует ручного запуска и указания области проверки.

2. Доктор (фаг) – «лечит» зараженные файлы, т.е. уничтожает вирусы в файлах и помогает восстановить зараженные программы.

3. Ревизор – запоминает исходное состояние системных файлов и областей и сравнивает с текущим состоянием. При выявлении несоответствия сообщает о них пользователю и исправляет.

4. Фильтр (антивирусный монитор) – помогает предотвратить проникновение вирусных программ. Располагается резидентно в оперативной памяти, перехватывает управление у вирусов и сообщает пользователю.

3.2.3. Программы обслуживания дисковой памяти.

1. Программы диагностики. Проверяют работоспособность устройств.

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




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

· При удалении уничтожается только название файла в каталоге, а не информация.

· Обычно объем данных в файле меньше, чем отведенное для него пространство на диске, поэтому в кластере, занимаемом последней частью («хвостом») файла, могут сохраняться остатки информации из предыдущего файла.

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

Программы-упаковщики позволяют уменьшить во много раз (в 2 раза и более) объем, занимаемый хранящейся на диске информацией.

Операционные системы MS DOS, WINDOWS при хранении информации на дисках использует некоторые специальные приемы, обеспечивающие ей максимальную скорость записи и чтения информации. Запись информации на диски производится на диски по кластерам, включающим, в зависимости от типа дисков, от 1 до 64 последовательных секторов. Даже записывая на диск файл, состоящий из одного символа (один байт) ОС будет отводить под запись на некоторых типах жестких дисков до 32 Кб дискового пространства, оставляя, таким образом, почти весь кластер не используемым. Такое расточительство оправдывается только тем, что на поиск любой записи на диске ОС будет тратить меньше времени. Кроме того, таблица размещения файлов (FAT), один экземпляр которой при работе с дисками всегда хранится в оперативной памяти ПК, будет более компактной и соответственно занимать в ней гораздо меньше места, освобождая ее для работы программ.

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

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

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

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

Третья группа файлов — сами архивные файлы.

Объединенная группа файлов по какому-то признаку и называется архивом.

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

  • ? имя файла;
  • ? сведения о каталоге, в котором содержится файл;
  • ? дата и время последней модификации файла;
  • ? размер файла на диске и в архиве;
  • ? код циклического контроля для каждого файла, используемый для проверки целостности архива (CRC—Cyclic Redundancy Check);
  • ? атрибуты файла (А — файл надо архивировать, S — системный файл, Н — спрятанный, W — для чтения и записи, R — только для чтения);
  • ? прочие сведения о файле (В — файл в архиве является устаревшей копией, Т — тип файла, Р — в архиве имеются сведения о пути к файлу, G — файл в архиве зашифрован паролем, V — файл продолжается в следующем томе архива, X — начало файла содержится в предыдущих томах архива).

Расширение архивного файла по умолчанию совпадает с обозначением архиватора (за исключением LHA (.LZH), PKZIP (.ZIP)):

Содержание

Упаковщик исполнимых файлов

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

Упакованный исполнимый файл является разновидностью самораспаковывающегося архива (SFX), в котором сжимаемая информация и программа для распаковки находится в одном файле.

Примеры упаковщиков

Распаковщики

Точная распаковка файлов, как и обратная разработка в целом, зачастую бывает затруднена или невозможна.

Многие распаковщики (например, procdump или PEiD) запускают файл и создают распакованный вариант файла из образа, загруженного в память. Однако в случае, если этот файл содержал вирус, система может быть повреждена. Кроме того, у упаковщиков существует ряд приёмов борьбы с динамической распаковкой: например, расшифровывать код не полностью, а лишь по мере исполнения, или, например, расшифровывать и запускать вирус целиком только в определённый день недели.

См. также

Ссылки

Wikimedia Foundation . 2010 .

Полезное

Смотреть что такое "Упаковка исполняемых файлов" в других словарях:

PECompact — Скри … Википедия

The Ultimate Packer for eXecutables — UPX the Ultimate Packer for eXecutables Тип Упаковка исполняемых файлов Написана на C++, Ассемблер ОС Microsoft Windows, DOS, 27 апреля 2008 Лицензия GNU GPL Сайт … Википедия

Mpress — Тип Упаковка исполняемых файлов Разработчик Matcode Software Операционная система Microsoft Windows, Mac OS Последняя версия 2.18 Лицензия Freeware Сайт … Википедия

UPX — the Ultimate Packer for eXecutables Тип Упаковка исполняемых файлов Написана на C++, Ассемблер Операционная система Microsoft Windows, Linux, MacOS, DOS, Atari Первый выпуск 26 мая 1998 год … Википедия

APLib — Тип Упаковка исполняемых файлов Разработчик Joergen Ibsen Написана на С Операционная система Microsoft Windows Языки интерфейса Английский Последняя версия 1.01 ( … Википедия

JCALG1 — Тип Упаковка исполняемых файлов Разработчик Bitsum Technologies Jeremy Collake Написана на Ассемблер Операционная система Microsoft Windows Языки интерфейса Английский … Википедия

ASPack — Вид главного окна Тип Упаковка исполняемых файлов Разработчик Алексей Солодовников (ASPack Software) … Википедия

EXPressor — Тип Упаковка исполняемых файлов Разработчик CGSoftLabs Написана на … Википедия

Читайте также: