在win7中 _OBJECT_HEADER变化比较大。不能直接取出_OBJECT_TYPE对象,而是使用对象在ObTypeIndexTable中的索引来引用_OBJECT_TYPE。
下面使用windbg来掩饰xp和win7获取_OBJECT_TYPE的方法。
xp系统获取方法
使用!object查看一个文件对象信息
lkd> !object 8914b2c0
Object: 8914b2c0 Type: (896a9ad0) File
ObjectHeader: 8914b2a8 (old version)
HandleCount: 1 PointerCount: 1
Directory Object: 00000000 Name: \WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.5512_x-ww_35d4ce83 {HarddiskVolume1}
看到ObjectHeader后面显示old version。
下面接着看该文件对象的对象头
lkd> dt nt!_OBJECT_HEADER 8914b2a8
+0x000 PointerCount : 0n1
+0x004 HandleCount : 0n1
+0x004 NextToFree : 0x00000001 Void
+0x008 Type : 0x896a9ad0 _OBJECT_TYPE
+0x00c NameInfoOffset : 0 ''
+0x00d HandleInfoOffset : 0x8 ''