Windbg: найти адрес базового модуля объекта драйвера в ядре?

#windows #debugging #kernel #windbg

#Windows #отладка #ядро #windbg

Вопрос:

Я пытаюсь найти адрес базового модуля объекта драйвера в режиме ядра, это вредоносный драйвер минифильтра, и проблема в том, что driverentry и адреса основных функций a кажутся поддельными (все 0), я попытался просмотреть структуру DRIVER_OBJECT, используя как команду DT, так и команду !drvobj 2, но ни один из них не показывает, где на самом деле загружен модуль, который представляет этот объект драйвера? команда lm также не показывает его, как я могу найти адрес базового модуля драйвера, если у меня есть доступ только к его объекту драйвера?

почему в структуре _DRIVER_OBJECT нет записи, которая показывает адрес базового модуля драйвера?

вывод команды dt :

 kd> dt _DRIVER_OBJECT 86b51448 
hal!_DRIVER_OBJECT
    0x000 Type             : 0n4
    0x002 Size             : 0n168
    0x004 DeviceObject     : (null) 
    0x008 Flags            : 0x12
    0x00c DriverStart      : (null) 
    0x010 DriverSize       : 0
    0x014 DriverSection    : (null) 
    0x018 DriverExtension  : 0x86b514f0 _DRIVER_EXTENSION
    0x01c DriverName       : _UNICODE_STRING "Driverdumpx"
    0x024 HardwareDatabase : 0x82dad250 _UNICODE_STRING "REGISTRYMACHINEHARDWAREDESCRIPTIONSYSTEM"
    0x028 FastIoDispatch   : (null) 
    0x02c DriverInit       : (null) 
    0x030 DriverStartIo    : (null) 
    0x034 DriverUnload     : (null) 
    0x038 MajorFunction    : [28] 0x880b69e0     long  <Unloaded_crashdmp.sys> 19e0
  

Основные указатели на функции также указывают на другой безопасный модуль!

Комментарии:

1. DRIVER_OBJECT является непрозрачной структурой, и элемент DriverStart не документирован как доступный, возможно, проверьте DriverExtension-> AddDevice