Защита от копирования дисков
Материал из Справочник исследователя программ
Основные защиты от копирования дисков
SafeDisk, StarForce, SecuROM, Tages...
Какие существуют способы взлома защиты CD от копирования на винчестер?
Вот несколько полезных советов для начала:
1) Ставим брейкпоинт "bpx GetDriveTypeA" и запускаем игру, перед этим скопировав ее на винчестер. Функция GetDriveTypeA возвращает в eax тип указанного диска. Нас интересуют только 2 возможных возвращаемых значения:
Если указанный диск - диск винчестера, то возвращаемое значение в eax равно 3.
Если указанный диск - CD, то в eax возвратится 5.
Ниже должна будет идти проверка возвращаемого значения (типа если не "5", то значит игру скопировали, и произойдет переход на выход, либо на сообщение о том, что CD не вставлен в CD-ROM), которую надо будет изменить под свои цели.
2) Если предыдущий способ не помог, то используем брейкпоинт "bpx GetVolumeInformation". Функция GetVolumeInformation обычно используется для проверки метки диска: после вызова функции, скорее всего будет идти сравнение метки. Это надо отследить и исправить, т.е. сделать так, чтобы при любой метке игра запускалась.
3) Еще можно попробовать ставить брейкпоинты на функции GetDiskFreeSpace и GetFileAttributesA. Из названия вы можете догадаться для чего нужны эти функции. Используйте это в своих целях.
4) Игра также может делать проверку на запись файла на диск, с которого она запускается. На CD, как вы понимаете, запись не должна получиться. Если же файл запишется, значит игру запускают с винчестера. В этом случае используйте брейкпоинты на функции CreateFileA и WriteFile, чтобы найти проверку на запись.