hackersroad
驱动牛犊
驱动牛犊
  • 注册日期2009-12-29
  • 最后登录2009-12-29
  • 粉丝1
  • 关注0
  • 积分4分
  • 威望31点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:3124回复:2

关于获得kernel32.dll的基址的问题!?

楼主#
更多 发布于:2009-12-29 20:40
在PEB_LDR_DATA+0x1C地方就是一些动态连接库的地址了,如第一个指向ntdll.dll,第二个就是Kernel32.dll的地址。
hackersroad
驱动牛犊
驱动牛犊
  • 注册日期2009-12-29
  • 最后登录2009-12-29
  • 粉丝1
  • 关注0
  • 积分4分
  • 威望31点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2009-12-29 20:41
PEB_LDR_DATA结构的最后三项跟struct _LDR_MODULE结构的前三项是一样的List-Entry链接,
InLoadOrderModuleList,InMemoryOrderModuleList,和InInitializationOrderModuleList,
但是这两个结构是怎样链接起来的呢?

其实,着两个结果中的三个List-Entry是共用的,如下图所示:
hackersroad
驱动牛犊
驱动牛犊
  • 注册日期2009-12-29
  • 最后登录2009-12-29
  • 粉丝1
  • 关注0
  • 积分4分
  • 威望31点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于: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;
游客

返回顶部