您的位置:首页 > 其它

[驱动开发] struct _LDR_DATA_TABLE_ENTRY

2015-01-13 19:18 288 查看
@Windows XP Professional Service Pack 3 (x86) (5.1, Build 2600)

lkd> dt -b _LDR_DATA_TABLE_ENTRY
nt!_LDR_DATA_TABLE_ENTRY
+0x000 InLoadOrderLinks : _LIST_ENTRY
+0x000 Flink            : Ptr32
+0x004 Blink            : Ptr32
+0x008 InMemoryOrderLinks : _LIST_ENTRY
+0x000 Flink            : Ptr32
+0x004 Blink            : Ptr32
+0x010 InInitializationOrderLinks : _LIST_ENTRY
+0x000 Flink            : Ptr32
+0x004 Blink            : Ptr32
+0x018 DllBase          : Ptr32
+0x01c EntryPoint       : Ptr32
+0x020 SizeOfImage      : Uint4B
+0x024 FullDllName      : _UNICODE_STRING
+0x000 Length           : Uint2B
+0x002 MaximumLength    : Uint2B
+0x004 Buffer           : Ptr32
+0x02c BaseDllName      : _UNICODE_STRING
+0x000 Length           : Uint2B
+0x002 MaximumLength    : Uint2B
+0x004 Buffer           : Ptr32
+0x034 Flags            : Uint4B
+0x038 LoadCount        : Uint2B
+0x03a TlsIndex         : Uint2B
+0x03c HashLinks        : _LIST_ENTRY
+0x000 Flink            : Ptr32
+0x004 Blink            : Ptr32
+0x03c SectionPointer   : Ptr32
+0x040 CheckSum         : Uint4B
+0x044 TimeDateStamp    : Uint4B
+0x044 LoadedImports    : Ptr32
+0x048 EntryPointActivationContext : Ptr32
+0x04c PatchInformation : Ptr32


@Windows 7 Ultimate (x64) (6.1, Build 7600)

lkd> dt -b _LDR_DATA_TABLE_ENTRY
nt!_LDR_DATA_TABLE_ENTRY
+0x000 InLoadOrderLinks : _LIST_ENTRY
+0x000 Flink            : Ptr64
+0x008 Blink            : Ptr64
+0x010 InMemoryOrderLinks : _LIST_ENTRY
+0x000 Flink            : Ptr64
+0x008 Blink            : Ptr64
+0x020 InInitializationOrderLinks : _LIST_ENTRY
+0x000 Flink            : Ptr64
+0x008 Blink            : Ptr64
+0x030 DllBase          : Ptr64
+0x038 EntryPoint       : Ptr64
+0x040 SizeOfImage      : Uint4B
+0x048 FullDllName      : _UNICODE_STRING
+0x000 Length           : Uint2B
+0x002 MaximumLength    : Uint2B
+0x008 Buffer           : Ptr64
+0x058 BaseDllName      : _UNICODE_STRING
+0x000 Length           : Uint2B
+0x002 MaximumLength    : Uint2B
+0x008 Buffer           : Ptr64
+0x068 Flags            : Uint4B
+0x06c LoadCount        : Uint2B
+0x06e TlsIndex         : Uint2B
+0x070 HashLinks        : _LIST_ENTRY
+0x000 Flink            : Ptr64
+0x008 Blink            : Ptr64
+0x070 SectionPointer   : Ptr64
+0x078 CheckSum         : Uint4B
+0x080 TimeDateStamp    : Uint4B
+0x080 LoadedImports    : Ptr64
+0x088 EntryPointActivationContext : Ptr64
+0x090 PatchInformation : Ptr64
+0x098 ForwarderLinks   : _LIST_ENTRY
+0x000 Flink            : Ptr64
+0x008 Blink            : Ptr64
+0x0a8 ServiceTagLinks  : _LIST_ENTRY
+0x000 Flink            : Ptr64
+0x008 Blink            : Ptr64
+0x0b8 StaticLinks      : _LIST_ENTRY
+0x000 Flink            : Ptr64
+0x008 Blink            : Ptr64
+0x0c8 ContextInformation : Ptr64
+0x0d0 OriginalBase     : Uint8B
+0x0d8 LoadTime         : _LARGE_INTEGER
+0x000 LowPart          : Uint4B
+0x004 HighPart         : Int4B
+0x000 u                : <unnamed-tag>
+0x000 LowPart          : Uint4B
+0x004 HighPart         : Int4B
+0x000 QuadPart         : Int8B


C++ Code

typedef struct _LDR_DATA_TABLE_ENTRY {
// Start from Windows XP
LIST_ENTRY InLoadOrderLinks;
LIST_ENTRY InMemoryOrderLinks;
LIST_ENTRY InInitializationOrderLinks;
PVOID DllBase;
PVOID EntryPoint;
ULONG SizeOfImage;
UNICODE_STRING FullDllName;
UNICODE_STRING BaseDllName;
ULONG Flags;
USHORT LoadCount;
USHORT TlsIndex;
union {
LIST_ENTRY HashLinks;
struct {
PVOID SectionPointer;
ULONG CheckSum;
};
};
union {
ULONG TimeDateStamp;
PVOID LoadedImports;
};
PVOID EntryPointActivationContext;        //_ACTIVATION_CONTEXT *
PVOID PatchInformation;

// Start from Windows Vista
LIST_ENTRY ForwarderLinks;
LIST_ENTRY ServiceTagLinks;
LIST_ENTRY StaticLinks;
PVOID ContextInformation;
PVOID OriginalBase;
LARGE_INTEGER LoadTime;

} LDR_DATA_TABLE_ENTRY, *PLDR_DATA_TABLE_ENTRY;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐