PE文件结构中的RVA与RAW

PE文件结构中的RVA与RAW

逆向工程核心原理里面这本书再讲PE结构体的时候讲这个点讲的有点碎

用它自己的图来说文件与内存映射有以下关系:

File2Stack.png

可以这样理解

  • 文件中:就是我们使用HexEditor打开的程序的十六进制数
  • 内存中:就是在IDA里面打开的文件的十六进制数

这里用windowsXP下的notepad举个例子


IDA&hxd.png
  • 左侧是IDA解析的,模仿在内存中运行时候的结构
  • 右侧是用HxD打开的分析


    Text.png

这里先入为主的讲,IDA的text段解析是错误的,实际值位0x1001000,上面的是 .text 段在内存中的位置,下面是 .text 段在文件中的位置,两者的地址是不一样的

这个时候就可以提出RVA(Relative Virtual Address)的概念了:

就是数据在IDA中的位置

RAW

数据在文件中的位置

提出公式

那么,在上面的例子中

RVA = 0x1007604

FileOffset = 0x1007604(RVA) -0x1001000(IDA中.text基址) + 0x400(文件中.text基址) = 0x6A04

在文件中的位置就是0x6A04

RVA&RAW.png

你可能感兴趣的:(PE文件结构中的RVA与RAW)