Проблемы с boot-драйвером

Discussion in 'WASM.NT.KERNEL' started by spirom, Sep 10, 2010.

  1. spirom

    spirom New Member

    Blog Posts:
    0
    Здравствуйте!
    У меня возникла такая ситуация: при загрузке драйвер ставит свою ProcessNotifyRoutine через PsSetCreateProcessNotifyRoutine, в ней проверяет имя процесса и если это винлогон, то аттачится к нему и ставит хук на функцию из вин32к. Когда хук ставится через патч SDT Shadow, то все проходит успешно, а если через сплайсинг, то система падает с IRQL_NOT_LESS_OR_EQUAL. Но если я делаю это при уже загруженной системе, то все работает, как часы. Подскажите, в чем может быть проблема? Заранее благодарю.
     
  2. x64

    x64 New Member

    Blog Posts:
    0
    Анализ дампа выкладывай, чего гадать-то.
     
  3. spirom

    spirom New Member

    Blog Posts:
    0
    Пока к сожалению не имею возможности... Кстати, в момент запуска винлогона на него отмаплена вин32к...или нет?
     
  4. x64

    x64 New Member

    Blog Posts:
    0
    В момент вызова нотификатора - нет.
     
  5. spirom

    spirom New Member

    Blog Posts:
    0
    А, тогда причина ясна. Но ведь нотификатор выполняется при irql=PASSIVE_LEVEL. Почему такой багчек?
     
  6. x64

    x64 New Member

    Blog Posts:
    0
    Код IRQL_NOT_LESS_OR_EQUAL не всегда означает то самое. Ещё одна не менее (если не более) распространённая причина - память невалидная. Ну т.е. вообще. Ни кем не выделенная, ни из пула, ни ещё как-либо. Просто какой-то виртуальный адрес, по которому нет никакой проекции, нет соответствия физическим страницам.
     
  7. spirom

    spirom New Member

    Blog Posts:
    0
    Ясно. Спасибо. А тогда есть какой-нибудь вариант как хукнуть функцию из вин32к не через шадоу таблицу при загрузке винды?