Всем доброго времени суток. Все играли в NFS-Most Wanted, F.E.A.R., и пр. игрушки, на которых стоят СД-защиты, наподобие старфорса... И конечно же, лицензию к играм купили ооочень даже не многие ))) Так или иначе защиты были пройдены... Но меня заинтересовал один вопрос. Компа у меня 2... древний и игровой... В первом случае, достаточно просто было в даемон-тулзе или алкоголе вставить образ, далее запустить АнтиСтарФорс-прогу, потом в диспетчере устройств отрубить реальный сд-привод и все работает... на втором компе последний пункт уже не помогает... приходится выдергивать шлейф. Так вот вопрос, можно ли как нибудь изловчится и написать драйвер, который будет эмулировать аппаратное отключение устройства...? как-будто-бы оно вовсе не соединено с компом? И чтобы даже из р0 было видно, что устройство отключенно? (если конечно проверяющая прога не знает о нас). Если туплю где-то сильно не пинайте... я только-только начал разбираться с этой темой... Заранее спс за ответы.
nitrotoluol который будет эмулировать аппаратное отключение устройства...? Да если драйвер будет работать в суперрежиме - технология виртуальных CPU, иначе из р0 всегда будет видно устройство по его PCI конфигурационной области. Т.о. драйвер должен переводить Windows в гостевой режим. Но технологию виртуализации поддерживают только последние CPU от Intel и AMD.
Может можна использовать режим SMM, или сделать эмуляцию IDE (которую обещают в будущих релизах DaemonToolsPro) и SF будет думать что запущен на реальном приводе А что скажет уважаемый _BC_ ?
PROFi Имеются ввиду CD-ROM приводы. Если драйвер защиты работает не напрямую с обарудованием. То всегда можно загрузить другой драйвер который будет перехватывать вызовы. CD-ROM можно только усыпить. Драйвер может не расспознать CD-ROM, когда он спит. Насчет аппоратного отключения. Тут я вижу несколько путей. 1. Воспользоваться ACPI и отключить IDE контролер. В таком случаи отключаться и все жесткии диски. 2. Выставить биты для того чтобы замаскировать каналы дисков, тут все зависит от железа. програ получается железо зависимая. SMM - вещь хорошая. Но реально работующего кода пока нет. Можно просто сделать перехват портов ввода/вывода. Если драйвер это не проверяет. Создаешь карту разрешенных портов заприщаешь порты приводов. И ловим исключение.
поотрубать приводы на IDE средствами чипсетов можно (притом довольно легко) и без перехвата I/O. Эффект равносилен все равно что при включенном компе отключить CD-ROM от шлейфа, по аналогии с "anti-starforce switch". Проблема в том, что никому до этого нет дела. Что-то вроде SF Nightmare, но на более чипсет-зависимом уровне с весьма злыми и местами недокументированными методами. И у звездного ансамбля появилось бы новое поле для экспериментов в области программно-аппаратной несовместимости. по-моему вот так вот сразу за весь мир говорить немного самонадеянно. Есть даже некоторые биосы, использующие I/O trap'ы для нужд паверменеджмента -- они тоже не прокатят за 'реально работающий код'?
Pavia Воспользоваться ACPI и отключить IDE контролер - даже в этом случае имеется полный доступ к PCI конфигурационной области, и следовательно защита самостоятельно может включать и выключать та устройства которые относятся к storage device. _BC_ Эффект равносилен все равно что при включенном компе отключить CD-ROM - эффект не равносилен см предидущий ответ, поскольку существует PCI стандарт, и включение - выключение устройств универсально. 2. Выставить биты для того чтобы замаскировать каналы дисков, тут все зависит от железа. програ получается железо зависимая. - этот способ более приемлен и условно "равносилен" отключению устройства, только можно создать базу чипсетов и гипотетически существует возможность и такой проверки. Кстати если речь иде о серьезных, разработанных под заказ программах, то в заказе всегда оговаривается оборудование на котором должна работать программа.
ты, надо полагать, вообще ясновидящий? "Существует PCT стандарт"... ну да, существуют всякие стандарты... а еще существуют средства, не имеющие никакого отношения к "PCI стандарту".
_BC_ Блин... НЯМЯ слов PCICMD—PCI COMMAND REGISTER Контролирует доступ к адресному пространству регистров I/O (ввода-вывода). Бит Значение 0 (1)Контролирует доступ к пространству портов I/O устройства. 0 Устройство не отвечает на запросы в порты ввода-вывода. 1 – отвечает. 1 (0) Тоже что и бит 0, но для доступа в память. 2 (1) Контролирует разрешение захвата шины PCI устройством. 1 – разрешает. (Допустим DMA обмен) Это отключает доступ к портам ввода -вывода (собственно чтобы выключить само устройство см стандарт ATA, или мне и его здесь привести)
да, можешь привести ATA спецификацию и не забудь PCI IDE Controller Specification и еще упомянуть различия в IDE-контроллерах от разных вендоров -- и получишь нормативную базу SF Nightmare. http://bash.org.ru/quote/113759