Полная нейтрализация защиты
Получить работоспособную копию защищенного диска –— это только полдела. Законченный взлом подразумевает как минимум восстановление искаженного TOC и отвязку защиты от диска. Другими словами, корректно взломанный диск должен копироваться на любом оборудовании, любыми штатными копировщиками и при этом не должен ни с чем конфликтовать.
Процесс отвязки обычно начинается с анализа геометрии диска на предмет выявления реально используемых сессий/секторов. Искаженные сессии обычно не несут никакой полезной нагрузки –— для защиты важен лишь сам факт их существования, но отнюдь не содержимое, которое на некоторых приводах вообще не доступно. А какие существуют способы проверки секций на существование? На "железном" уровне способ один –— компьютер посылает приводу SCSI/ATAPI команду READ TOC и получает в ответ полный каталог содержимого. На программном уровне взаимодействие с аппаратурой чаще всего осуществляется посредством ASPI/SPTI-интерфейса, реже –— непосредственно через порты ввода-вывода. Некоторые защиты предпочитают действовать через драйвер привода CD-ROM, полагая что этот способ более цивилизован и менее опасен.
В любом случае у хакера есть два пути –— либо локализовать команду чтения TOC в машинном коде (обычно это делается установкой точки останова на функцию SendASPI32Command) и попытаться переписать код программы так, чтобы она корректно работала с любым TOC, либо путем перехвата функции CreateFile/DeviceIoContorl внедрить "шпиона", отслеживающего весь проходящий через него поток SCSPI/ATAPI-команд и, в случае чтения TOC защищенного диска, возвращающего защите подложные данные. Первый путь боле надежен, а, значит, и более практичен. Рассмотрим его поподробнее.