скрыть

скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Google  
 

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



Автор: Hex

Запихнув в windasm упакованную программу, начинающие делают квадратные глаза типа: "А.. эээ чо это такое?". Поговорим о упакованых прогах.

Написание прог большого размера конецчно же привело людей к мысли: "А не сжать ли это?". Когда нужно просто хранить прогу, то ее сжимают архиватором. А вот когда нужно сжать прогу и чтобы она разжималась в память юзают упаковщики. Т.е. прога становится считай что sfx архив, тока разархивация происходит в память, а не надиск. Естественно, если такой файл запихнуть в дизассемблер то кода проги явно не увидишь, это тоже самое что попытаться открыть вордом rar архив в котором лежит doc файл. Сначала разжать надо, а потом пихать в дизассемблер. Сначала когда упаковка была просто средством для уменьшения размера exe файла, сама прога упаковщик позволяла разжать упакованый ею файл. Но народ сразу понял, что упаковкой можно прятать код. Т.е. в дизассемблере реальный код не увидишь пока не распакуешь. Вот и начали делать упаковщики которые тока пакуют. Ну крэкеры тоже не тупые. Нету распаковщика - и не надо. Распаковать файл можно и вручную. Берется дебагер и спомощью него проходится весь распаковывающий кусок кода(распаковщик). В конце такого кода идет переход на Entry point оригинальной не упакованной проги. Тут нужно остановиться снять дамп. Т.е. дапм памяти будет соответсвовать распакованой программе, т.е. программе которая была вначале, до упаковки. Потом дампу ставят правильный Entry point, он явно виден в конце любого распаковщика. И получают практически одинаковую с оригинальной прогу. Программерам такой расклад не понравился. Толку от такой упаковки, если любой ламер с дебагером и дампером за 5 минут все на место поставит. И начались подлости и пакости. Одной из первых пакостей стала порча таблицы импорта. Заключалось это в том, что таблица импорта содержит имена функций и dll, по которым потом берутся адреса и создается IAT, так вот в упаковщик впихнули код который затирал эти имена. Т.е. IAT оставалось, а имен нету. Естественно дамп получался нерабочий. Крэкеры фишку просекли и начали ставить брейк поинты на функции которые могут испортить таблицу импорта, и без проблем все это дело обломали. Вот тут началась эра протекторов. Програмеры поняли что надо отобрать у крэкеров ихние любимые инструменты или сделать так, что с этими инструментами крэкерам было б очень тяжело отслеживать, то что происходит. Т.е. код распаковщика начали делать полиморфным. Потом начали вставлять антитрассировочный и антидебаговый код. И начались разные смеси полиморфных распаковщиков с разными приемами обнаружения дебагеров + код который создает IAT "вручную"(т.е. таблица импорта вобще не существует). Например Pcguard, tElock. Но крэкеры тоже руки сложе не сидели, сделали проги для прятанья дебагеров(icedump и frogsice) и проги для восстановления импорта по IAT(revirgin, imprec). Думаете на этом все заканчивается? Нееет это было тока 3 года назад. А щас все гораздо интереснее. Программеры нашли новыем методы обнаружения отладчиков которым плевать на icedump и frogsice. Потом началось клепания протекторов, которые забирают часть кода проги в себя. Т.е. отодрав протектор выходит не полный дамп, пусть даже и с правильным импортом. Это к примеру SVKP, ASProtect и Activemark. Код проги начали криптовать. Причем криптовать по извратному. Например Asprotect в зависимости от регистрационного ключа по разному распаковывает прогу. И последнее извращение - распаковщик на собственной виртуальной машине. Т.е. такой распаковщик выполняет псевдокод и контролировать его просто нереально. Это защита StarForce.

Вот такие пироги. Ты рад что ты сюда сунулся? Готов к гиморою? :) Не боись! Прорвемся! :) Казаки и Демиурги крэкеры сломали, reget тоже сломали. Все у нас получится :)






Copyright © 2004-2016 "Delphi Sources". Delphi World FAQ




Группа ВКонтакте   Ссылка на Twitter   Группа на Facebook