PE简介

        PE文件格式是windows可执行文件(包括Dll)在磁盘上的存储格式。
它的内容大致如下
    +------------------------+--------------------------------------------|
    | DOS-stub               | IMAGE_DOS_HEADER                |
    +------------------------+------------------------------------------- |--------------------------
    | file-header              | IMAGE_FILE_HEADER                |
    +------------------------+--------------------------------------------|
    | optional header     |                                                           | 
    |- - - - - - - - - - - - - -   |IMAGE_OPTIONAL_HEADER32 | 
    | data directories     |                                                           | IMAGE_NT_HEADERS   
    |                                  |                                                           |
    +-----------------------+---------------------------------------------|---------------------------
    |                                  |                                                           |
    | section headers   | IMAGE_SECTION_HEADER       |
    |                                  |                                                           |
    +------------------------+--------------------------------------------|
    |                                  |                                                           |
    | section 1                |  节数据                                             |
    |                                  |                                                           |
    +------------------------+--------------------------------------------|
    |                                  |                                                           |
    | section 2                | ...                                                       |
    |                                  |                                                           |
    +------------------------+--------------------------------------------|
    |                                  |                                                           |
    | ...                              | ...                                                       |
    |                                  |                                                           |
    +------------------------+--------------------------------------------|
    |                                  |                                                           |
    | section n                | ...                                                       |
    |                                  |                                                           |
    +------------------------+--------------------------------------------|

        上表中的第二列是文件中数据的结构,这些数据结构在winnt.h中都有定义。
节(section)是属性相同的数据的集合(只读,可写,可执行等等)。
几乎所有的PE文件都有code节,该节中存放的是代码;
其他节一般都是数据节,因为属性的不同而被分开,IMAGE_OPTIONAL_HEADER32中
有一个叫data directories数据目录的数组,数组的类型为IMAGE_DATA_DIRECTORY
结构,该结构存储数据在节中存放的位置(RVA),数组总共有16项。可执行文件的
导入/出表,资源数据等等都是由这个数据中的数据项指明在哪个节的哪个地方存放。
在上述列出的结构中,有许多地址,它们并不是文件偏移量,几乎都是RVA,RVA是
Relative Virtual Address的缩写,它是可执行文件加载到内存中相对于
加载基址的偏移地址,通过它可以计算出数据在文件中的偏移量。 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值