关于LDR_MODULE结构

      在上一篇随笔"进程环境块PEB笔记"中,我们提到了PEB_LDR_DATA内含有三个双向链表成员(LIST_ENTRY类型),然而根据LIST_ENTRY类型的定义,它只有两个分别指向前一个和后一个LIST_ENTRY结构的指针成员,那么又是怎么得到LDR_MODULE结构的信息的呢?
      其实弄清楚LDR_MODULE结构的详细定义这些疑问也就会迎刃而解了. 
Code

      其相关成员的描述如下:
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模块加载地址的代码就很明了了.  

posted on 2009-09-18 09:27  Joshua Leung  阅读(1470)  评论(0编辑  收藏  举报

导航