首先了解与PE有关的基本概念:
1. 虚拟内存地址(VA)
2. 相对虚拟内存地址(RVA)
3. 文件偏移地址(FOA)
4. 特殊地址
虚拟内存地址:PE文件被操作系统加载进入内存,进程的基地址+相对虚拟内存地址
相对虚拟内存地址:虚拟内存中用来定位某个特定位置的地址,该地址的值是这个特定位置距离某个模块基地址的偏移量。
文件偏移地址:和内存无关,是指某个位置距离文件头的偏移。
然后在PE中有一个数据结构称为数据目录,包含了导出表,导入表,资源表,异常表,属性证书表,重定位表,调试数据,Architecture,Global Ptr,线程局部存储,加载配置表,绑定导入表,IAT,延迟导入表和CLR。
节的概念:用来存放不同类型数据,比如代码、数据、常亮、资源等,不同的节具有不同的访问权限。
对齐:
内存对齐:通常32位的windows XP是4KB,64位的是8KB
文件对齐:通常会以一个物理山区的大小作为对齐粒度的值,即512字节
资源对齐:略