PE文件知识点笔记整理

PE文件地址和虚拟内存地址之间的映射关系

1)文件偏移地址(File Offset
  数据在PE 文件中的地址叫文件偏移地址,这是文件在磁盘上存放时相对于文件开头的偏移。
2)装载基址(Image Base
  PE 装入内存时的基地址。默认情况下,EXE 文件在内存中的基地址是0x00400000DLL文件是0x10000000。这些位置可以通过修改编译选项更改。
3)虚拟内存地址(Virtual AddressVA
  PE 文件中的指令被装入内存后的地址。
4)相对虚拟地址(Relative Virtual AddressRVA
  相对虚拟地址是内存地址相对于映射基址的偏移量。

虚拟内存地址、映射基址、相对虚拟内存地址三者之间有如下关系。

VA= Image Base+ RVA

PS:文件偏移是相对于文件开始处0 字节的偏移,RVA(相对虚拟地址)则是相对于装载基址

知识点:

1PE 文件中的数据按照磁盘数据标准存放,以0x200 字节为基本单位进行组织。当一
个数据节(section)不足0x200 字节时,不足的地方将被0x00 填充;当一个数据节超过0x200
字节时,下一个0x200 块将分配给这个节使用。因此PE 数据节的大小永远是0x200 的整数倍。(512B[字节])
2)当代码装入内存后,将按照内存数据标准存放,并以0x1000 字节为基本单位进行组
织。类似的,不足将被补全,若超出将分配下一个0x1000 为其所用。因此,内存中的节总是(4k)
0x1000 的整数倍。
3)0x00400000处的偏移。由于操作系统在进行装载时“基本”上保持PE中的各种数据结构,所以文件偏移地址和RVA有很大的一致性。
   之所以说“基本”上一致是因为还有一些细微的差异。这些差异是由于文件数据的存放单
位与内存数据存放单位不同而造成的。



猜你喜欢

转载自blog.csdn.net/bing767573382/article/details/80643507
今日推荐