Содержание материала

Вступление

 Наконец, я решился на написание этой статьи, идея пришла давно, но полностью систематизировать решился только сегодня. Сегодня мы не будем рассматривать конкретного взлома. На это есть две причины:

 1) У меня начал глючить CD-ROM, пора менять

2) Статья получилась бы слишком длинной

 В принципе вторая причина меня волнует мало, но первая встала доста- точно остро.

 

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

 Принципы и методы защиты

 Сейчас я постараюсь написать все, когда либо встреченные методы за- щиты:

 

1) Проверка на наличие диска

2) Проверка на метку тома

3) Проверка на наличие места

5) Проверка на наличие файла и его аттрибуты

5) Проверка на запись файла

6) Другие виды проверки

7) Некоторые общие моменты

 

1) Проверка на наличие диска

 Я разделяю эти проверки на два класса:

 

1) Функцией GetDriveTypeA

 Теория: Функция GetDriveTypeA возвращает в eax тип диска по его имени Вот список возвращаемых значений.

 0 -- - Невозможно определить тип

1 -- - Диск не найден

2 DRIVE_REMOVABLE - Гибкий (возможна замена)

3 DRIVE_FIXED - Жесткий (замена невозможна)

4 DRIVE_REMOTE - Сетевой диск

5 DRIVE_CDROM - CD-ROM

6 DRIVE_RAMDISK - RAM - Диск

 

Как часто встречается:

 Такая проверка стоит на абсолютном большинстве ИГР.

 Методы взлома:

 

1) Используя Soft-Ice/TRW2000 поставить бряк на эту функцию командой bpx GetDriveTypeA и если после выхода в вызывающую программу, недалеко стоит cmp eax, 00000005, то следует 5 исправить на 3, т.е. программа будет искать не CD-ROM, а жесткий диск.

 2) Дизассемблировать перейти к месту вызова функции, посмотреть, есть ли сравнение. Это несколько модернизированный вариант пункта 1.

 3) На эту идею я натолкнулся в статье Vadim M. "Как отучить игры от про- верки CD-ROM (на примере Hellfire)". Краткое описание: поскольку функция GetDriveTypeA вызывается из kernel32.dll будем править там, смысл, чтобы все жесткие диски в системе были бы как CD-ROM'ы, этого легко достичь пере- правив результат возвращаеммый функцией с 3 на 5, правдо это не всегда про- ходит. Эту статью можно увидеть на www.reversing.net

 

Примеры игр:

 Project IGI, Deadly Dozen, and many others

 2) Запись имя диска в реестр или файл

 

Как часто встречается:

 Достаточно часто

 Метод взлома:

 Я использую такой метод, т.к. программа где-то сохранила имя CD-ROM'a, значит, если мы изменим имя, то программа откажется запускаться, даже если диск будет торчать в CDюке. Изменяем имя и если запускаться перестанет, то ищем с помощью RegMon и FileMon, куда программа его запрятала.

 Примеры игр:

 Shockman (Шокмэн), записывала в файл WINDOWS\facked.ini

 

Добавить комментарий

Не использовать не нормативную лексику.

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

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить