首页
社区
课程
招聘
[讨论]句柄表中对象头的定义问题,两个说法??
发表于: 2011-1-5 14:43 3878

[讨论]句柄表中对象头的定义问题,两个说法??

2011-1-5 14:43
3878
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直播授课

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
2
明明是一样的嘛,如果是union的话,windbg把其成员都显示出来了,看偏移就知道了,是一样的
2011-1-6 10:05
0
雪    币: 1157
活跃值: (847)
能力值: ( LV8,RANK:150 )
在线值:
发帖
回帖
粉丝
3
好像是一样哈,晕了,我只是看了字段对不上了
2011-1-6 13:41
0
游客
登录 | 注册 方可回帖
返回
//