Сжатие запускаемых файлов

Самый простой способ уменьшить размер приложения — использование программы для сжатия файлов. Лично я очень люблю ASPack , которую вы можете скачать в Интернете по адресу www.aspack.com или скопиро­вать с компакт-диска из директории Programs (файл установки называется ASPack.exe). Она прекрасно сжимает исполняемые файлы E ХЕ и динамиче­ские библиотеки DLL.

Запустите программу ASPack . exe , и перед вами откроется окно (рис. 1.1) приглашения к установке.

Достаточно выбрать путь, куда будут скопированы файлы, и нажать кнопку Start. Через пару секунд программа будет установлена на компьютере и запустится.

Рис. Сжатие файла

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

Настроек у ASPack не так уж много и расположены они на вкладке Options (рис. 1.4).

Давайте рассмотрим, для чего они нужны.

Рис. Настройки программы

Теперь давайте разберемся, как работает сжатие. Сначала весь код програм­мы сжимается архиватором. Если вы думаете, что он какой-то "наворочен­ный", то сильно ошибаетесь. Для сжатия используется обычный архиватор, только оптимизированный для сжатия двоичного кода. В конец сжатого ко­да добавляется код разархиватора, который будет во время выполнения раз­жимать программу в первоначальное состояние. И в самом конце ASPack изменяет заголовок исполняемого файла так, чтобы при старте сначала запускался разархиватор.

В ASPack алгоритм сжатия очень хороший, а разархиватор достаточно маленький (меньше 1 Кбайт), поэтому сжатие происходит очень сильно, а к результирующему файлу добавляется только один килобайт. Таким обра­зом, программа может сжать файл размером в 1,5 Мбайт в 300—400 Кбайт.

Теперь, когда вы запускаете сжатую программу, сначала заработает разархи­ватор, который разожмет бинарный код программы и аккуратно поместит его в памяти компьютера. Как только этот процесс закончится, разархиватор передаст управление вашей программе.

Некоторые считают, что из-за расходов на распаковку программа будет ра­ботать медленней!!! Я бы сказал, что вы не заметите разницу. Даже если и будут какие-то потери, то они будут неощутимы (по крайней мере, на со­временных компьютерах). Это происходит потому, что архивация хорошо оптимизирована под двоичный код. И по сути дела, распаковка происходит только один раз и в дальнейшем никакого влияния на работу программы не оказывает. В результате потери в скорости из-за сжатия будут неощутимы.

Программа без сжатия перед началом выполнения все равно грузится в па­мять. В случае сжатого кода во время загрузки происходит разархивирование кода. В данном способе есть две стороны: происходят затраты времени на распаковку, но программа меньше занимает места на диске и быстрее считывается с него. Жесткий диск — одно из самых медленных звеньев персо­нального компьютера, поэтому, чем меньше надо загружать, тем быстрее программа может приступить к выполнению. Именно вследствие этого итоговая потеря в скорости запуска программы незначительная.

При нормальном программировании с использованием всех "навороченных" возможностей типа визуальности и объектного программирования код полу­чается большим, но его можно сжать специальным архиватором на 60 - 70%. А писать такой код намного легче и быстрее.

Еще одно "за" использование сжатия — заархивированный код труднее взломать, потому что не каждый Disassembler сможет прочитать упакован­ные команды. Так что помимо уменьшения размера вы получаете защиту, способную остановить большинство взломщиков. Конечно же, профессио­нала этим не отпугнешь. Но взломщик средней руки не будет мучиться со сжатым двоичным кодом.

free-templates.ru
Сайт управляется системой uCoz