PE文件结构

本文详细介绍了PE文件的基本结构,包括DOSHeader、PEHeader、可选头及节表等内容,并解释了这些部分如何组织PE文件的数据和代码。此外,还讨论了节的概念及其在PE文件中的作用。

PE文件结构
  
   a, DOS Header(TImageDosHeader)  其中
 -- _lfanew 指向 【c】
 -- e_magic 为 MZ
   b, Dos stub  用于不支持PE的操作系统,显示错误提示如“This program requires Windows”,不定长
   c, PE Header(TImageNtHeaders)
       -- PE 标志 (TImageNtHeaders.Signature) 必须等于 IMAGE_NT_SIGNATURE,即 PE/0/0
 -- PE 基本信息 (TImageFileHeader)
    其中 NumberOfSections 决定了【d】中元素的数目
                TimeDateStamp 为文件创建的时间
 -- PE 可选头 (TImageOptionalHeader)
           其中 SizeOfHeaders 是 【a】+【b】+【c】+【d】的总空间
                DataDirectory 是IMAGE_DATA_DIRECTORY结构的数组,每个结构给出了一个重要数据结    构的 

  RVA,如引入地址表、导出地址表等。例如 
   TImageImportDescriptor = packed record
       OriginalFirstThunk: DWord;
       TimeDateStamp  : DWord;
       ForwarderChain : DWord;
       DLLName        : DWord;
       FirstThunk     : DWord;
   end;                      

  end;
   d, 节表 (array of TImageSectionHeader)
 --
   e ....
      各个节
  
   =========== 关于节===================
   ★  PE文件的真正内容划分成块,称之为sections(节)。每节是一块拥有共同属性的数据,比如代码/数据、读/写、导入/导出等。我们

可以把PE文件想像成一逻辑磁盘,PE header 是磁盘的boot扇区,而sections就是各种文件,每种文件自然就有不同属性,如只读、系统、隐

藏、文档等。节的划分是基于各组数据的共同属性,而不是逻辑概念。重要的不是数据/代码是如何使用的,如果PE文件中的数据/代码拥有相

同属性,它们就能被归入同一节中。
   =========== 关于节===================

 

参考书目:
1, Delphi下深入Windows核心编程
2, 编程高手箴言  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值