在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 ''
+0x00e QuotaInfoOffset : 0 ''
+0x00f Flags

本文探讨了Windows XP和Windows 7系统下_OBJECT_HEADER结构的区别,特别是在Win7中如何通过ObTypeIndexTable索引来引用_OBJECT_TYPE。通过Windbg调试工具,展示了在两种系统环境下获取_OBJECT_TYPE的不同方法。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



