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

Вступление

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

 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

 


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

 Теория: Метка тома проверяется с помощи функции GetVolumeInformation, если эта функция вызывается, то почти однозначный вывод проверка метки тома. Функция очень часто используется с категорией 1.

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

 Очень часто

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

 1) Используя Soft-Ice/TRW2000 поставить бряк на эту функцию командой bpx GetVolumeInformation. После этой процедуры скорее всего идет процедура сравнения правильной метки с вашей. После процедуры переправить переход.

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

 3) Если категорию 1 вы уже правили. Посмотреть метку тома на компакт-ди- ске, и установить такую же на любом жестком диске.

 4) Если категорию 1 не правили. Берем любой свой компакт с длинной метки тома меньшей, либо равной длинне метки на ломаемом компакте. Ищем в испол- няемых файлах программы, настоящую метку и заменяем ее нашей. Вывод если Вы вставляете свой компакт, игра думает, что это ее родной.

 

Примеры игр:

 

Deadly Dozen

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

 Теория: Наличие свободного места на диске проверяется функцией GetDiskFreeSpace. Функция вызывается для того, чтобы проверить что это за диск, ведь на CD свободного места нет.

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

Бывает

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

 Аналогичны методам 1 и 2 из 1 и 2 категории, только на другую функцию.

 Примеры игр:

 Была какая-то, но не помню названия.

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

 Теория: Один из распространившихся в последнее время приемчиков, часто это используется для проверки видео. Которое не копируется на ЖД. В основном используются такие функции:

 GetFileAttributesA - Проверка аттрибутов файла

ReadFile - Чтение файла

GetFileSize - Получение размера файла

FindFirstFile - Поиск файла.

 

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

 Иногда

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

 Я использую такой метод, запускаем FileMon. Затем запускаем игру, со вставленным компактом. Потом сразу же выходим и смотрим, к каким файлам шло обращение. Если файлы не большие можно скопировать их на ЖД, если есть большие видео, то их можно заменить любыми другими видаками маленького размера. В других случая придется править переходы. Если используются все эти функции придется попотеть.

 

Примеры игр:

 Project IGI, в этой игре были два файла по 1 байту, я их скопировал на диск C: в корневой, изменил после GetDriveTypeA сравнение и все.

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

 Теория: Для этого используются функции WriteFile и GetLastError. Одна для записи файла другая для проверки ошибки, если они стоят подряд, то это явно она.

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

 Ни разу не встречал

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

 Чуть-чуть исправленный метод из предыдущей категории.

 


Примеры игр:

 Я же сказал: "Не встречал!"

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

 Теория: Бывают и другие сильно замусоленные проверки

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

 На дисках компании "Русобит"

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

 Почитайте статьи ASMax'a на www.reversing.net

 Примеры игр:

 Казаки, Star Force.

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

 Часто в играх проверки объединены в одну общую процедуру. И удалив ее, программа начинает работать.

 Практически всегда программа защищена совокупностью защит, которые здесь представлены в разных категориях.

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

 Все ругательства отправлять в null

Все остальное на Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.

P.S. Запомните все материалы публикуются только в учебных целях и автор за их использование ответственности не несет!!

P.P.S. Возможно имеют место опечатки, заранее извините!

 With best wishes Fess

 И да пребудет с вами великий дух bad-сектора.

 

 

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

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

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

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


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