Здравствуйте, Denwer, Вы писали:
D>>Итак ситуация следующай: берем список загруженных драйверов системы , находи его начало ... D>Чуток не информативно написал, берем от туда инфу о каждом драйвере, находим его начало ....
как и любой PE image, посторонний драйвер может иметь .Init секции, информация из которых будет discarded после инициализации (читай выхода из Driver Entry), со всеми вытекающими. либо какие-то ошибки связанные с недоступностью paging в момент обращения (высокий IRQL, etc)
... << RSDN@Home 1.2.0 alpha rev. 0>>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Итак ситуация следующай: берем список загруженных драйверов системы , находи его начало и чистаем всю занимаемую им память. В других версиях виндовса это работает, но не в висте. На некоторых драйверах идет падение с ошибкой что память недоступна, смотрю в дебаггере список драйверов командой lm, в этой памяти как раз драйвер, проверил с помощью lm a xxxxx, тоже самое, лежит там драйвер. НО ПРИ ОБРАЩЕНИИ ПАДАЕТ, даже если открыть окно мемори в дебаггере, то там знак вопросы одни. Вот и думаю, в чем отличае висты и хп? Может ли быть такое что в списках драйверов драйвер числется, но на самом деле не загружен? Хотя бывают случаи когда например первая страница в памяти есть(4КБ) — видна даже MZ абревиатура, так упадет на второй.
Здравствуйте, Denwer, Вы писали:
D>Итак ситуация следующай: берем список загруженных драйверов системы , находи его начало и чистаем всю занимаемую им память. В других версиях виндовса это работает, но не в висте. На некоторых драйверах идет падение с ошибкой что память недоступна, смотрю в дебаггере список драйверов командой lm, в этой памяти как раз драйвер, проверил с помощью lm a xxxxx, тоже самое, лежит там драйвер. НО ПРИ ОБРАЩЕНИИ ПАДАЕТ, даже если открыть окно мемори в дебаггере, то там знак вопросы одни. Вот и думаю, в чем отличае висты и хп? Может ли быть такое что в списках драйверов драйвер числется, но на самом деле не загружен? Хотя бывают случаи когда например первая страница в памяти есть(4КБ) — видна даже MZ абревиатура, так упадет на второй.
Сложно что-то сказать без !analyze -v. На первый взгляд нужные страницы выгружены при обращении на высоком IRQL.
Машина чистая? Я попробовал на практически нулевой висте х86 на реальной машине, PE заголовки у драйверов вроде на месте. Возможно, какой то гадт портит каталог страниц ( случайно или намерено ).
Здравствуйте, Valery A. Boronin, Вы писали:
VAB>Здравствуйте, Denwer, Вы писали:
D>>>Итак ситуация следующай: берем список загруженных драйверов системы , находи его начало ... D>>Чуток не информативно написал, берем от туда инфу о каждом драйвере, находим его начало .... VAB>как и любой PE image, посторонний драйвер может иметь .Init секции, информация из которых будет discarded после инициализации (читай выхода из Driver Entry), со всеми вытекающими. либо какие-то ошибки связанные с недоступностью paging в момент обращения (высокий IRQL, etc)
Я бы тоже грешил на это, но заголовок РЕ разме может быть discarded ?
И еще одно уточнение, было даже такое что, падало на второй страницы секции.
Кстати, кто нибудь знает что происходит, с теми кусками памяти где раньше была секция,с флагом дискардет. Я вот не разу не встречал чтобы на этом месте был другой исполняемый код например, такое подозрение что эти секции всего то ЗАБЫВАЮТСЯ, возможно в висте это не так, из за технологии динамичсеского распределения памяти ядра.
D>Итак ситуация следующай: берем список загруженных драйверов системы , находи его начало и чистаем всю занимаемую им память. В других версиях виндовса это работает, но не в висте. На некоторых драйверах идет падение с ошибкой что память недоступна, смотрю в дебаггере список драйверов командой lm, в этой памяти как раз драйвер, проверил с помощью lm a xxxxx, тоже самое, лежит там драйвер. НО ПРИ ОБРАЩЕНИИ ПАДАЕТ, даже если открыть окно мемори в дебаггере, то там знак вопросы одни. Вот и думаю, в чем отличае висты и хп? Может ли быть такое что в списках драйверов драйвер числется, но на самом деле не загружен? Хотя бывают случаи когда например первая страница в памяти есть(4КБ) — видна даже MZ абревиатура, так упадет на второй.
Элементарно может быть не промапплен — и не только в виста — например так себя ведет win32k.sys.
Ибо Session Space.
Use ZwQuerySystemInformation + KeAttachProcess и вперед — где-то же он есть
Viva el Junta Militar! Viva el Presidente!
Re[5]: Страницы памяти в Vista
От:
Аноним
Дата:
17.11.07 20:25
Оценка:
После вызова инит рутины драйвера такие секции именно забываются. В т.ч. могут выгрузиться нафиг из памяти и их адреса могут стать невалидными.