【PE学习----VA、RVA、File Offset】

本文基于《Windows PE权威指南》探讨PE文件格式,重点关注虚拟地址(VA)、相对虚拟地址(RVA)和文件偏移量(File Offset)的概念及其在程序加载到内存中的作用。
摘要由CSDN通过智能技术生成

参考了《Windows_PE权威指南》这本书

VA   (Virual Address)  虚拟地址   程序被载入od中 如该图显示的就是虚拟地址VA;

RVA(Relative Virual Address)相对虚拟地址,表示此段代码在内存中相对于基地址的偏移。
File Offset 文件偏移地址 :当PE文件存储在磁盘上时,某个数据的位置相对于文件头的偏移量,称为文件地址。即C32里面能看到的地址
imagebase 基址  :文件执行时将被映像到指定内存地址中,这个初始内存地址称为基址;指的是IMAGE_OPTIONAL_HEADER中ImageBase这个值;
他们之间的计算公式 
                VA = imagebase + RVA;
               File Offset = VA - ImageBase – VRk 或者 File Offset= RVA – VRk
              VRk为RVA同File Offset的一个差值
             VRk=RVA-File Offset    (IMAGE_SECTION_HEADER .virtualAddress  -  IMAGE_SECTION_HEADER .PointerToRawData)



附上 转换代码:

//RVA 转 文件偏移地址
DWORD RvaToOffset(PIMAGE_NT_HEADERS pNt, DWORD dwRva)
{
    DWORD nC
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值