我在 http://www.nirsoft.net/kernel_struct/vista/OBJECT_HEADER.html 上看的Windows Vista :OBJECT_HEADER定义是:(我在网上好像看过说明Windows 2k,Windows Vista,Windows xp都是这样定义OBJECT_HEADER的)
typedef struct _QUAD
{
union
{
INT64 UseThisFieldToCopy;
Float DoNotUseThisField;
};
} QUAD, *PQUAD;
typedef struct _OBJECT_HEADER
{
LONG PointerCount;
union
{
LONG HandleCount;
PVOID NextToFree;
};
POBJECT_TYPE Type;
UCHAR NameInfoOffset;
UCHAR HandleInfoOffset;
UCHAR QuotaInfoOffset;
UCHAR Flags;
union
{
POBJECT_CREATE_INFORMATION ObjectCreateInfo;
PVOID QuotaBlockCharged;
};
PVOID SecurityDescriptor;
QUAD Body;
} OBJECT_HEADER, *POBJECT_HEADER;
如果是这样的定义,为什么看雪上会有一篇翻译的文章说Windows XP SP2 英文版OBJECT_HEADER的大小是:0x18
好像翻译文章也有问题:+0x018 Body : _QUAD 应该说Body在OBJECT_HEADER的偏移是:0x18,而OBJECT_HEADER的大小应该是:0x18+8(大小32字节)才对啊!真是糟糕!