Как отыскать DriverObject?

Тема в разделе "WASM.NT.KERNEL", создана пользователем dyn, 20 июн 2011.

  1. dyn

    dyn New Member

    Публикаций:
    0
    Регистрация:
    30 окт 2009
    Сообщения:
    566
    Есть код, который внедряется в драйвер.
    Выполняется он не первым (т.е. не до EntryPoint), а где-то в середине (я даже заранее не могу знать глубину вызовов функций).

    Мне нужно отыскать DriverObject.
    Как найти быстрее и удобнее всего? Сейчас подумываю о раскрутке стека, но не знаю, в какой момент нужно остановить раскрутку и как понять, что DriverObject уже найден.
     
  2. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Если драйвер реальный, не фейковый, то задача легко решается, если ты знаешь хотя бы один адрес внутри образа этого драйвера в памяти. Например, это может быть адрес возврата или адрес какой-нибудь известной колбек-функции в этом драйвере, не знаю, тут тебе виднее. А найти объект драйвера просто: перечислить все объекты в \Driver, для каждого объекта получить секцию и там сравнить имеющийся адрес с диапазоном [Base; Base + Size].
     
  3. dyn

    dyn New Member

    Публикаций:
    0
    Регистрация:
    30 окт 2009
    Сообщения:
    566
    x64
    Спасибо! Какое простое и очевидное решение то оказалось ))
     
  4. int2eh

    int2eh Alexander Leevy

    Публикаций:
    0
    Регистрация:
    19 авг 2007
    Сообщения:
    106
    Адрес:
    Москва
    dyn
    Правильно x64 говорит! Начните с книжки “Шрайбер_Недокум_возм_W2000.djvu”, эту супер бук нада начинать читать с конца – Глава 7 “Управление объектами Windows” (стр. 399). Там Вы узнаете сначало об объектах, их заголовке и т.д., там же и научитесь последовательному перебору записей каталога объектов Windows (в частности \Driver) и многому другому! Вот как-то так-с!!! Удачи!