Физическое отключение устройства. Траблы

Тема в разделе "WASM.NT.KERNEL", создана пользователем nitrotoluol, 13 июл 2007.

  1. nitrotoluol

    nitrotoluol New Member

    Публикаций:
    0
    Регистрация:
    5 сен 2006
    Сообщения:
    848
    Всем доброго времени суток.
    Все играли в NFS-Most Wanted, F.E.A.R., и пр. игрушки, на которых стоят СД-защиты, наподобие старфорса... И конечно же, лицензию к играм купили ооочень даже не многие ))) Так или иначе защиты были пройдены... Но меня заинтересовал один вопрос.

    Компа у меня 2... древний и игровой... В первом случае, достаточно просто было в даемон-тулзе или алкоголе вставить образ, далее запустить АнтиСтарФорс-прогу, потом
    в диспетчере устройств отрубить реальный сд-привод и все работает... на втором компе последний пункт уже не помогает... приходится выдергивать шлейф.

    Так вот вопрос, можно ли как нибудь изловчится и написать драйвер, который будет эмулировать аппаратное отключение устройства...? как-будто-бы оно вовсе не соединено с компом? И чтобы даже из р0 было видно, что устройство отключенно? (если конечно проверяющая прога не знает о нас).

    Если туплю где-то сильно не пинайте... я только-только начал разбираться с этой темой...

    Заранее спс за ответы.
     
  2. PROFi

    PROFi New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2003
    Сообщения:
    690
    nitrotoluol

    который будет эмулировать аппаратное отключение устройства...?
    Да если драйвер будет работать в суперрежиме - технология виртуальных CPU, иначе из р0 всегда будет видно устройство по его PCI конфигурационной области. Т.о. драйвер должен переводить Windows в гостевой режим. Но технологию виртуализации поддерживают только последние CPU от Intel и AMD.
     
  3. oneman

    oneman New Member

    Публикаций:
    0
    Регистрация:
    10 апр 2007
    Сообщения:
    4
    Может можна использовать режим SMM, или сделать эмуляцию IDE (которую обещают в будущих релизах DaemonToolsPro) и SF будет думать что запущен на реальном приводе :)
    А что скажет уважаемый _BC_ ?
     
  4. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    PROFi
    Имеются ввиду CD-ROM приводы. Если драйвер защиты работает не напрямую с обарудованием. То всегда можно загрузить другой драйвер который будет перехватывать вызовы.
    CD-ROM можно только усыпить. Драйвер может не расспознать CD-ROM, когда он спит.
    Насчет аппоратного отключения. Тут я вижу несколько путей.

    1. Воспользоваться ACPI и отключить IDE контролер. В таком случаи отключаться и все жесткии диски.
    2. Выставить биты для того чтобы замаскировать каналы дисков, тут все зависит от железа. програ получается железо зависимая.

    SMM - вещь хорошая. Но реально работующего кода пока нет.

    Можно просто сделать перехват портов ввода/вывода. Если драйвер это не проверяет. Создаешь карту разрешенных портов заприщаешь порты приводов. И ловим исключение.
     
  5. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    можно через отладочные регистры также отловить.
     
  6. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    поотрубать приводы на IDE средствами чипсетов можно (притом довольно легко) и без перехвата I/O. Эффект равносилен все равно что при включенном компе отключить CD-ROM от шлейфа, по аналогии с "anti-starforce switch". Проблема в том, что никому до этого нет дела. Что-то вроде SF Nightmare, но на более чипсет-зависимом уровне с весьма злыми и местами недокументированными методами. И у звездного ансамбля появилось бы новое поле для экспериментов в области программно-аппаратной несовместимости.

    по-моему вот так вот сразу за весь мир говорить немного самонадеянно. Есть даже некоторые биосы, использующие I/O trap'ы для нужд паверменеджмента -- они тоже не прокатят за 'реально работающий код'? ;)
     
  7. PROFi

    PROFi New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2003
    Сообщения:
    690
    Pavia

    Воспользоваться ACPI и отключить IDE контролер - даже в этом случае имеется полный доступ к PCI конфигурационной области, и следовательно защита самостоятельно может включать и выключать та устройства которые относятся к storage device.

    _BC_

    Эффект равносилен все равно что при включенном компе отключить CD-ROM - эффект не равносилен см предидущий ответ, поскольку существует PCI стандарт, и включение - выключение устройств универсально.


    2. Выставить биты для того чтобы замаскировать каналы дисков, тут все зависит от железа. програ получается железо зависимая. - этот способ более приемлен и условно "равносилен" отключению устройства, только можно создать базу чипсетов и гипотетически существует возможность и такой проверки. Кстати если речь иде о серьезных, разработанных под заказ программах, то в заказе всегда оговаривается оборудование на котором должна работать программа.
     
  8. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    ты, надо полагать, вообще ясновидящий? ;) "Существует PCT стандарт"... ну да, существуют всякие стандарты... а еще существуют средства, не имеющие никакого отношения к "PCI стандарту".
     
  9. PROFi

    PROFi New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2003
    Сообщения:
    690
    _BC_

    Блин... НЯМЯ слов

    PCICMD—PCI COMMAND REGISTER

    Контролирует доступ к адресному пространству регистров I/O (ввода-вывода).


    Бит Значение
    0 (1)Контролирует доступ к пространству портов I/O устройства. 0 Устройство не отвечает на запросы в порты ввода-вывода. 1 – отвечает.
    1 (0) Тоже что и бит 0, но для доступа в память.
    2 (1) Контролирует разрешение захвата шины PCI устройством. 1 – разрешает. (Допустим DMA обмен)

    Это отключает доступ к портам ввода -вывода (собственно чтобы выключить само устройство см стандарт ATA, или мне и его здесь привести)
     
  10. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    да, можешь привести ATA спецификацию и не забудь PCI IDE Controller Specification и еще упомянуть различия в IDE-контроллерах от разных вендоров -- и получишь нормативную базу SF Nightmare.

    http://bash.org.ru/quote/113759