使用!devobj <address>
命令
它会告诉你什么是 AttachedDevice(上)和什么是 AttachedTo 设备(下)
.foreach (place { .shell -ci "!object \\Device;" sed s/" ".." "//g | sed s/" .*"//g } ) { !grep -i -c "!devobj place" -e "Attached"}
笔记:
!grep is from domdbg windbg extension sed is from gnuwin32
输出
AttachedTo (Lower) 86fb1630 \Driver\PnpManager
AttachedTo (Lower) 86d22420 \Driver\aswTdi
AttachedDevice (Upper) 862f59d8 \Driver\wdmaud
AttachedDevice (Upper) 86e11130 \Driver\ROOTMODEM
AttachedDevice (Upper) 86de7528 \Driver\Kbdclass
AttachedTo (Lower) 86fac190 \Driver\PnpManager
AttachedDevice (Upper) 86e02560 \Driver\Rasl2tp
AttachedDevice (Upper) 862e9c90 \Driver\sysaudio
AttachedTo (Lower) 86f5ece8 \Driver\ACPI
AttachedTo (Lower) 86e15020 \Driver\i8042prt
或者自己解析所有设备的结构以找到模式
.foreach (place { .shell -ci "!object \\Device;" sed s/" ".." "//g | sed s/" .*"//g } ) {dt nt!_DEVICE_OBJECT -y Dri->Drivern* place ;dt nt!_DEVICE_OBJECT -yr DeviceOb->Att->Dri->Drivern* place ;dt nt!_DEVICE_OBJECT -yr Atta->Dri->Drivern* place ; .echo ==========}
当设备对象同时具有 AttachedDevice 和 AttachedTo 设备时,它应该向您显示这样的输出
+0x008 DriverObject :
+0x01c DriverName : _UNICODE_STRING "\Driver\TermDD"
+0x0b0 DeviceObjectExtension :
+0x018 AttachedTo :
+0x008 DriverObject :
+0x01c DriverName : _UNICODE_STRING "\Driver\PnpManager"
+0x010 AttachedDevice :
+0x008 DriverObject :
+0x01c DriverName : _UNICODE_STRING "\Driver\Kbdclass"