zoukankan      html  css  js  c++  java
  • PE Header中的Optional Header中的最后一个成员变量data directory(数据目录)

    (一)data directory 是一个 IMAGE_DATA_DIRECTORY结构数组,共有16个成员。如果您还记得节表可以看作是PE文件各节的根目录的话,也可以认为 data directory 是存储在这些节里的逻辑元素的根目录。明确点,data directory 包含了PE文件中各重要数据结构的位置和尺寸信息。每个成员包含了一个重要数据结构的信息。

    MemberInfo inside
    0 Export symbols
    1 Import symbols
    2 Resources
    3 Exception
    4 Security
    5 Base relocation
    6 Debug
    7 Copyright string
    8 Unknown
    9 Thread local storage (TLS)
    10 Load configuration
    11 Bound Import
    12 Import Address Table
    13 Delay Import
    14 COM descriptor

    data directory 的每个成员都是 IMAGE_DATA_DIRECTORY结构类型的,其定义如下所示:

    IMAGE_DATA_DIRECTORY STRUCT
      VirtualAddress dd ? //数据结构的相对虚拟地址(RVA)
      isize dd ? //含有VirtualAddress所指向数据结构的字节数
    IMAGE_DATA_DIRECTORY ENDS

    (二)如何定位到某一个数据目录:

    • DOS header 定位到 PE header
    • optional header 读取 data directory 的地址。
    • IMAGE_DATA_DIRECTORY 结构尺寸乘上找寻结构的索引号: 比如您要找寻import symbols的位置信息,必须用IMAGE_DATA_DIRECTORY结构尺寸(8 bytes)乘上1import symbolsdata directory中的索引号)。
    • 将上面的结果加上data directory地址,我们就得到包含所查询数据结构信息的 IMAGE_DATA_DIRECTORY结构项。
  • 相关阅读:
    win10- *.msi 软件的安装,比如 SVN安装报2503,2502
    Java-byte[]与16进制字符串互转
    log4j 日志脱敏处理 + java properties文件加载
    CentOS7编译安装SVN(subversion1.9.7)
    Samba安装与配置
    php 实现redis发布订阅消息及时通讯
    PHP中使用ActiveMQ实现消息队列
    sphinx 配置文件全解析
    nginx和apache 配置
    php实现汉诺塔问题
  • 原文地址:https://www.cnblogs.com/wang-can/p/3280488.html
Copyright © 2011-2022 走看看