Вступление
Наконец, я решился на написание этой статьи, идея пришла давно, но полностью систематизировать решился только сегодня. Сегодня мы не будем рассматривать конкретного взлома. На это есть две причины:
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
- Назад
- Вперёд >>
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!