内核PE文件结构与地址转换方法.pdfVIP

  • 1
  • 0
  • 约1.26万字
  • 约 16页
  • 2026-06-24 发布于北京
  • 举报

本章将继续探索内核中解析PE文件的相关内容,PE文件中FOA与VA、RVA之间的转换也是很重要的。所谓

的FOA是文件中的地址,VA则是内存装入后的虚拟地址,RVA是内存基址与当前地址的相对偏移。本章还

是需要用到《驱动开发:内核解析PE结构导出表》中所封装的KernelMapFile()映射函数,在映射后对其

PE格式进行相应的解析,并实现转换函数。

首先先来演示一下内存VA地址与FOA地址互相转换的方式,通过使用WinHEX打开一个二进制文件,打开

后我们只需要关注如下蓝色注释为映像建议装入基址,注释为映像装入后的RVA偏移。

通过上方的截图结合PE文件结构图我们可得知0000158B为映像装入内存后的RVA偏移,紧随其后的则是映像的建议装入基址,为什么是建议而不是绝对?别急,后面慢慢来解释。

通过上述已知条件,我们可以计算出程序实际装入内存后的地址,如下:

VA(实际装入地址)ImageBase(基址)+RVA(偏移)+0000158B0040158B

找到程序的OEP,接下来我们判断一下这个0040158B属于哪个节区。以.text节区为例,通过观察区段可知,第

一处橙色位置00000B44(节区尺寸),第二处紫色位置

文档评论(0)

1亿VIP精品文档

相关文档