阅读:3276回复:2
关于获得kernel32.dll的基址的问题!?
在PEB_LDR_DATA+0x1C地方就是一些动态连接库的地址了,如第一个指向ntdll.dll,第二个就是Kernel32.dll的地址。
|
|
沙发#
发布于:2009-12-29 20:41
PEB_LDR_DATA结构的最后三项跟struct _LDR_MODULE结构的前三项是一样的List-Entry链接,
InLoadOrderModuleList,InMemoryOrderModuleList,和InInitializationOrderModuleList, 但是这两个结构是怎样链接起来的呢? 其实,着两个结果中的三个List-Entry是共用的,如下图所示: |
|
板凳#
发布于:2009-12-29 20:46
2.2 PEB_LDR_DATA结构
typedef struct _PEB_LDR_DATA { ULONG Length; // +0x00 BOOLEAN Initialized; // +0x04 PVOID SsHandle; // +0x08 LIST_ENTRY InLoadOrderModuleList; // +0x0c LIST_ENTRY InMemoryOrderModuleList; // +0x14 LIST_ENTRY InInitializationOrderModuleList;// +0x1c } PEB_LDR_DATA,*PPEB_LDR_DATA; // +0x24 2.3 struct _LDR_MODULE结构 -typedef struct _LDR_MODULE -{ - LIST_ENTRY InLoadOrderModuleList; +0x00 - LIST_ENTRY InMemoryOrderModuleList; +0x08 - LIST_ENTRY InInitializationOrderModuleList; +0x10 - void* BaseAddress; +0x18 - void* EntryPoint; +0x1c - ULONG SizeOfImage; - UNICODE_STRING FullDllName; - UNICODE_STRING BaseDllName; - ULONG Flags; - SHORT LoadCount; - SHORT TlsIndex; - HANDLE SectionHandle; - ULONG CheckSum; - ULONG TimeDateStamp; -} LDR_MODULE, *PLDR_MODULE; |
|