XP句柄表中,关于对象头的结构定义,ntifs.h中的定义如下
typedef struct _OBJECT_HEADER {
ULONG ReferenceCount;
union {
ULONG HandleCount;
PSINGLE_LIST_ENTRY NextToFree;
}; // 0x4
POBJECT_TYPE ObjectType; // 0x8
OBJECT_HEADER_FLAGS Flags; // 0xc
union {
POBJECT_CREATE_INFORMATION ObjectCreateInfo;
PQUOTA_BLOCK QuotaBlock;
}; // 0x10
PSECURITY_DESCRIPTOR SecurityDescriptor; // 0x14
QUAD Body; // 0x18
} OBJECT_HEADER, *POBJECT_HEADER;
,但是windbg中的显示确是这样的:
lkd> dt _OBJECT_HEADER
nt!_OBJECT_HEADER
+0x000 PointerCount : Int4B
+0x004 HandleCount : Int4B
+0x004 NextToFree : Ptr32 Void
+0x008 Type : Ptr32 _OBJECT_TYPE
+0x00c NameInfoOffset : UChar
+0x00d HandleInfoOffset : UChar
+0x00e QuotaInfoOffset : UChar
+0x00f Flags : UChar
+0x010 ObjectCreateInfo : Ptr32 _OBJECT_CREATE_INFORMATION
+0x010 QuotaBlockCharged : Ptr32 Void
+0x014 SecurityDescriptor : Ptr32 Void
+0x018 Body : _QUAD
,windbg中显示的有对象的名称信息的位置,但是好像ntifs.h中的定义并不是这样啊,到底是哪个正确呢??我要如何才能从对象头取得这个对象 的名称呢?
还有,windbg中的+0x0004 HandleCount是什么意思呢??我知道+0x000 PointerCount是这个句柄的引用计数,HandleCount就不知道了,往前辈们指点啊。。。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课