关于LDR_MODULE结构

      在上一篇随笔"进程环境块PEB笔记"中,我们提到了PEB_LDR_DATA内含有三个双向链表成员(LIST_ENTRY类型),然而根据LIST_ENTRY类型的定义,它只有两个分别指向前一个和后一个LIST_ENTRY结构的指针成员,那么又是怎么得到LDR_MODULE结构的信息的呢?
      其实弄清楚LDR_MODULE结构的详细定义这些疑问也就会迎刃而解了. 
ContractedBlock.gif ExpandedBlockStart.gif Code
 1 typedef struct _LDR_MODULE {
 2 
 3   LIST_ENTRY              InLoadOrderModuleList;
 4   LIST_ENTRY              InMemoryOrderModuleList;
 5   LIST_ENTRY              InInitializationOrderModuleList;
 6   PVOID                   BaseAddress;
 7   PVOID                   EntryPoint;
 8   ULONG                   SizeOfImage;
 9   UNICODE_STRING          FullDllName;
10   UNICODE_STRING          BaseDllName;
11   ULONG                   Flags;
12   SHORT                   LoadCount;
13   SHORT                   TlsIndex;
14   LIST_ENTRY              HashTableEntry;
15   ULONG                   TimeDateStamp;
16 
17 } LDR_MODULE, *PLDR_MODULE;
18 

      其相关成员的描述如下:
InLoadOrderModuleList:
      Pointers to previous and next LDR_MODULE in load order.
InMemoryOrderModuleList:
      Pointers to previous and next LDR_MODULE in memory placement order.
InInitializationOrderModuleList:
      Pointers to previous and next LDR_MODULE in initialization order.
BaseAddress:
     Module Base address known also as HMODULE.
     可以用以下图例来说明此结构:
      
   
      由该图可知,三个链表结构被PEB_LDR_DATA和LDR_MODULE结构共用. 知道了这些,再看上文给出的获取kernel32.dll模块加载地址的代码就很明了了.  

转载于:https://www.cnblogs.com/cmleung/archive/2009/09/18/1568978.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值