Программирование на C++ глазами хакера


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


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

  • Auto run after loading (Автоматический запуск после загрузки) — как только вы открыли файл на вкладке Open File, программа может автома­тически начать сжатие, если вы поставили галочку в этом параметре.
  • Exit when done (Выйти по завершению) — закрыть программу по оконча­нии процесса сжатия.
  • Max compression (Максимальное сжатие) — вероятность неправильной работы программы при использовании этого параметра увеличивается, но и файл может стать меньше. Можете протестировать программу при максимальном сжатии, и если возникнут проблемы, то убрать галочку с этого параметра.
  • use Windows DLL loader (Использовать загрузчик Windows ) — существует два загрузчика динамических библиотек: стандартный Windows и опти­мизированный для старых компиляторов Borland C++. Мы будем ис­пользовать для написания программ Visual C++, поэтому вы должны по­ставить галочку на этом параметре.
  • Preserve extra data (Игнорировать дополнительные данные) — в некото­рых программах в конце запускаемого файла могут быть какие-то допол­нительные данные. Если ASPack попытается их сжать, то эти данные могут стать недоступными. Примером такого файла может быть инстал­лятор в виде одного запускаемого файла. В нем вначале идет исполняе­мый код программы, а в конце — добавленные файлы, которые инстал­лятор должен скопировать на компьютер. Именно эти данные иногда необходимо игнорировать и не сжимать.

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

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




Начало  Назад  Вперед