Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #64, МАРТ 2006 г.

защита игр от взлома

КРИС КАСПЕРСКИ АКА МЫЩЪХ

Спецвыпуск: Хакер, номер #064, стр. 064-066-9


Распознать виртуальные машины довольно легко, они несут на своем горбу довольно специфичный набор оборудования. Однако уже появились патчи, которые скрывают присутствие VM Ware, и, что хуже всего, многие легальные пользователи предпочитают запускать второстепенные утилиты из-под виртуальных машин, чтобы не засирать основную систему. Защита не может (не имеет ни морального, ни юридического права!) отказывать VM Ware в исполнении, иначе пользователи снесут защиту к чертям, мотивировав это «производственной необходимостью». Они будут правы (правда, так они не освобождаются от регистрации). Некоторые даже подадут в суд за умышленное ограничение функциональности, не отраженное на упаковке. Перейдем к практике...

Лучше всего привязываться к жесткому диску. Как показывает практика, он меняется реже всего. Чтобы прочесть серийный номер, совершенно не обязательно писать собственный драйвер, достаточно воспользоваться библиотекой ASPI (но она не установлена по умолчанию) или SPTI (есть только в NT/XP и требует прав администратора). Есть и вот такой трюк. Вызываешь GetVolumeInformation и смотришь на размер тома в байтах. Не слишком уникальная информация, но на «другой» машине с вероятностью, близкой к единице, она будет иной. Плюс такая проверка реализуется очень просто, работает стабильно на всем семействе Windows-подобных систем (в том числе эмуляторы) и не требует никаких прав.

Компиляция on demand

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

Во-первых, «отломать» защиту становится намного сложнее, поскольку она не спрашивает никаких серийных номеров, не требует ключевых файлов и хакеру просто не за что зацепиться. Во-вторых, даже если программа будет взломана, придется распространять ее только в исполняемом файле (в который легко внедрить «водяные знаки», идентифицирующие владельца, например зашифрованный MAC-адрес его сетевой карты). К исполняемым файлам, добытым противоестественным путем (то есть скачанным из ненадежных источников), народ испытывает традиционное недоверие, и далеко не каждый рискнет запускать их.

Как затруднить распаковку

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

Назад на стр. 064-066-8  Содержание  Вперед на стр. 064-066-10