我正在寻找有关_DEVICE_OBJECT-> _ DEVOBJ_EXTENSION结构的信息。

我想进一步了解这种结构,像实际使用的那样。但具体来说,我想了解_DEVICE_OBJECT* AttachedTo成员以及它与_DEVICE_OBJECT* AttachedDevice结构中的_DEVICE_OBJECT成员之间的区别。

Google证明是徒劳的,我找不到任何引用在Windows Internals一书中。任何资源或信息都将不胜感激。

编辑:
好吧。。。盯着WinDbg之后,我发现AttachedTo字段似乎指向顶部的设备对象设备树。有人可以确认吗?

#1 楼

根据来自http://www.mouseos.com/windows/kernel/DeviceStack.html的此图,AttachedDevice指向下一个设备,DeviceExtension->AttachedTo指向上一个设备:



#2 楼

使用!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"


#3 楼

Microsoft已在其MSDN站点上完整记录了该结构。不久前,我还创建了一篇有关此数据结构的博客文章-http://bsodtutorials.blogspot.co.uk/2013/11/devobj-and-deviceobject.html

评论


欢迎来到逆向工程!我们希望答案不仅仅具有链接,因此即使链接断开,内容也将允许个人解决当前的问题或至少搜索相关解决方案。

–asheeshr
2014年1月11日在6:27