Есть код, который внедряется в драйвер. Выполняется он не первым (т.е. не до EntryPoint), а где-то в середине (я даже заранее не могу знать глубину вызовов функций). Мне нужно отыскать DriverObject. Как найти быстрее и удобнее всего? Сейчас подумываю о раскрутке стека, но не знаю, в какой момент нужно остановить раскрутку и как понять, что DriverObject уже найден.
Если драйвер реальный, не фейковый, то задача легко решается, если ты знаешь хотя бы один адрес внутри образа этого драйвера в памяти. Например, это может быть адрес возврата или адрес какой-нибудь известной колбек-функции в этом драйвере, не знаю, тут тебе виднее. А найти объект драйвера просто: перечислить все объекты в \Driver, для каждого объекта получить секцию и там сравнить имеющийся адрес с диапазоном [Base; Base + Size].
dyn Правильно x64 говорит! Начните с книжки “Шрайбер_Недокум_возм_W2000.djvu”, эту супер бук нада начинать читать с конца – Глава 7 “Управление объектами Windows” (стр. 399). Там Вы узнаете сначало об объектах, их заголовке и т.д., там же и научитесь последовательному перебору записей каталога объектов Windows (в частности \Driver) и многому другому! Вот как-то так-с!!! Удачи!