Как можно узнать адрес объекта Section (или Segment) который отвечает за загруженный драйвер? В структуре DriverObject есть поле Section, но у меня сильное подозрение что это не ссылка на секцию. Так как там иногда быват полная туфта (смотрел ссылки в WinDbg) Разбирал процесс загрузки MmLoadSystemImage есть подозрение что для не сессионных драйверов вообще нет объектов Section,Segment...
Код (Text): PLDR_DATA_TABLE_ENTRY Section = DriverObject->DriverSection; if (Section != NULL) { DPRINT("DriverObject->DriverSection = 0x%x\n",DriverObject->DriverSection); DPRINT("Section->BaseAddress = 0x%x\n",Section->BaseAddress); DPRINT("Section->EntryPoint = 0x%x\n",Section->EntryPoint); DPRINT("Section->SizeOfImage = 0x%x\n",Section->SizeOfImage); DPRINT("Section->CheckSum = 0x%x\n",Section->CheckSum); DPRINT("Section->BaseDllName [%ws]\n",Section->BaseDllName.Buffer); DPRINT("Section->FullDllName [%ws]\n",Section->FullDllName.Buffer); } Так ее можно вообще занулить, а не только туфту всунуть =) ЗЫ.. Что общего между названием топика и вопросом ???
Память переданная драйверам - памать которая выделяется ядром ОС для загрузки в нее тела драйвера. ОК? Так я с чего и начал разговор что часто по смещениям в объекте Section стоят либо 0 либо происходит обращение к невалидной памяти. Которую отладчик не может прочитать.