[驱动开发] struct _LDR_DATA_TABLE_ENTRY


@Windows XP Professional Service Pack 3 (x86) (5.1, Build 2600)

 1 lkd> dt -b _LDR_DATA_TABLE_ENTRY  2 nt!_LDR_DATA_TABLE_ENTRY  3  +0x000 InLoadOrderLinks : _LIST_ENTRY  4  +0x000 Flink : Ptr32  5  +0x004 Blink : Ptr32  6  +0x008 InMemoryOrderLinks : _LIST_ENTRY  7  +0x000 Flink : Ptr32  8  +0x004 Blink : Ptr32  9  +0x010 InInitializationOrderLinks : _LIST_ENTRY 10  +0x000 Flink : Ptr32 11  +0x004 Blink : Ptr32 12  +0x018 DllBase : Ptr32 13  +0x01c EntryPoint : Ptr32 14  +0x020 SizeOfImage : Uint4B 15  +0x024 FullDllName : _UNICODE_STRING 16  +0x000 Length : Uint2B 17  +0x002 MaximumLength : Uint2B 18  +0x004 Buffer : Ptr32 19  +0x02c BaseDllName : _UNICODE_STRING 20  +0x000 Length : Uint2B 21  +0x002 MaximumLength : Uint2B 22  +0x004 Buffer : Ptr32 23  +0x034 Flags : Uint4B 24  +0x038 LoadCount : Uint2B 25  +0x03a TlsIndex : Uint2B 26  +0x03c HashLinks : _LIST_ENTRY 27  +0x000 Flink : Ptr32 28  +0x004 Blink : Ptr32 29  +0x03c SectionPointer : Ptr32 30  +0x040 CheckSum : Uint4B 31  +0x044 TimeDateStamp : Uint4B 32  +0x044 LoadedImports : Ptr32 33  +0x048 EntryPointActivationContext : Ptr32 34    +0x04c PatchInformation : Ptr32 

 

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

 1 lkd> dt -b _LDR_DATA_TABLE_ENTRY  2 nt!_LDR_DATA_TABLE_ENTRY  3  +0x000 InLoadOrderLinks : _LIST_ENTRY  4  +0x000 Flink : Ptr64  5  +0x008 Blink : Ptr64  6  +0x010 InMemoryOrderLinks : _LIST_ENTRY  7  +0x000 Flink : Ptr64  8  +0x008 Blink : Ptr64  9  +0x020 InInitializationOrderLinks : _LIST_ENTRY 10  +0x000 Flink : Ptr64 11  +0x008 Blink : Ptr64 12  +0x030 DllBase : Ptr64 13  +0x038 EntryPoint : Ptr64 14  +0x040 SizeOfImage : Uint4B 15  +0x048 FullDllName : _UNICODE_STRING 16  +0x000 Length : Uint2B 17  +0x002 MaximumLength : Uint2B 18  +0x008 Buffer : Ptr64 19  +0x058 BaseDllName : _UNICODE_STRING 20  +0x000 Length : Uint2B 21  +0x002 MaximumLength : Uint2B 22  +0x008 Buffer : Ptr64 23  +0x068 Flags : Uint4B 24  +0x06c LoadCount : Uint2B 25  +0x06e TlsIndex : Uint2B 26  +0x070 HashLinks : _LIST_ENTRY 27  +0x000 Flink : Ptr64 28  +0x008 Blink : Ptr64 29  +0x070 SectionPointer : Ptr64 30  +0x078 CheckSum : Uint4B 31  +0x080 TimeDateStamp : Uint4B 32  +0x080 LoadedImports : Ptr64 33  +0x088 EntryPointActivationContext : Ptr64 34  +0x090 PatchInformation : Ptr64 35  +0x098 ForwarderLinks : _LIST_ENTRY 36  +0x000 Flink : Ptr64 37  +0x008 Blink : Ptr64 38  +0x0a8 ServiceTagLinks : _LIST_ENTRY 39  +0x000 Flink : Ptr64 40  +0x008 Blink : Ptr64 41  +0x0b8 StaticLinks : _LIST_ENTRY 42  +0x000 Flink : Ptr64 43  +0x008 Blink : Ptr64 44  +0x0c8 ContextInformation : Ptr64 45  +0x0d0 OriginalBase : Uint8B 46  +0x0d8 LoadTime : _LARGE_INTEGER 47  +0x000 LowPart : Uint4B 48  +0x004 HighPart : Int4B 49  +0x000 u : <unnamed-tag> 50  +0x000 LowPart : Uint4B 51  +0x004 HighPart : Int4B
52 +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;

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM