VA&RVA 和 RVA to RAW
VA&RVA
VA指的是进程虚拟内存的绝对地址,RVA(Relative Virtual Address,相对虚拟地址)指从某个基准位置(ImageBase)开始的相对地址。VA与RVA满足下面的换算关系。
RVA + ImageBase = VA
PE(Portable Executable)头部信息大多以RVA形式存在。原因在于,PE文件(主要是DLL(DLL,Dynamic Linked Library))加载到进程虚拟内存的特定位置时,该位置可能已经加载了其它PE文件(DLL)。此时必须通过重定位(Relocation)将其加载到其它空白的位置,若PE头信息使用的是VA,则无法正常访问。因此,使用RVA来定位信息,即使发生了重定位,只要相对于基准位置的相对地址没有变化,就能正常访问到指定信息,不会出现任何问题。
提示:
32 位 Widows OS 中,各进程分配有 4GB 的虚拟内存,因此,进程中 VA 值的范围是 0000 0000 ~ FFFF FFFF。
RVA to RAW
PE文件加载到内存时,每个节区都要能准确完成内存地址与文件偏移间的映射。这种映射一般称为 RVA to RAW,方法如下:
- 查找RVA所在节区。
- 使用简单的公式计算文件偏移(RVA)。
根据IMAGE_SECTION_HEADER结构体,换算公式如下:
RAW - PointerToRawData = RVA - VirtualAddress
进而得:
RAW = RVA - VirtualAddress + PointerToRawData
PE头中表示地址时不使用VA,而是RVA。
Q:节区头成员 VirtualAddress 是内存中节区头的起始地址(RVA),VirtualAddress 不就是 VA 吗?为什么要叫 RVA 呢?
A:“使用 RVA 值来表示节区头的成员 VirtualAddress”,这样理解就可以。节区头结构体(IMAGE_SECTION_HEADER)的 VirtualAddress 成员与虚拟内存地址(VA,VirtualAddress)用的术语相同才引起这一混乱。“节区头成员 VirtualAddress 指的是虚拟内存中相应节区的起始地址,它以 RVA 的形式保存在结构体中”,如此理解即可。
Preference
逆向工程核心原理 \(P_{92}\) \(P_{104}\)
就着这个帖子理解 RVA、VA、RAW、偏移量
RVA可以理解为内存偏移;RAW可以理解为文件偏移(硬盘偏移)。
VA&RVA 和 RVA to RAW的更多相关文章
- 【PE结构】由浅入深PE基础学习-菜鸟手动查询导出表、相对虚拟地址(RVA)与文件偏移地址转换(FOA)
0 前言 此篇文章想写如何通过工具手查导出表.PE文件代码编程过程中的原理.文笔不是很好,内容也是查阅了很多的资料后整合出来的.希望借此加深对PE文件格式的理解,也希望可以对看雪论坛有所贡献.因为了解 ...
- C/C++ 实现VA与FOA之间的转换
PE结构中的地址互转,这次再来系统的复习一下关于PE结构中各种地址的转换方式,最终通过编程来实现自动解析计算,最后将这个功能集成到我的迷你解析器中,本章中使用的工具是上次讲解PE结构文章中制作的CMD ...
- PE格式第三讲扩展,VA,RVA,FA(RAW),模块地址的概念
PE格式第三讲扩展,VA,RVA,FA的概念 作者:IBinary出处:http://www.cnblogs.com/iBinary/版权所有,欢迎保留原文链接进行转载:) 一丶VA概念 VA (vi ...
- 第三讲扩展,VA,RVA,FA(RAW),模块地址的概念
一丶VA概念 VA (virtual Address) 虚拟地址的意思 ,比如随便打开一个PE,找下它的虚拟地址 这边都是. 二丶模块地址(image Base) 模块地址,就是exe加载到内存的时候 ...
- PE格式的理解(待补充)
PE文件格式 一.基本结构 1.DOS头一般到节区头成为PE头部分,其下称为PE体.文件的内容一般可分为代码(.text).数据(.data).资源(.rsrc),分别保存. 2.PE头与各节区的尾部 ...
- 深入学习PE文件(转)
PE文件是Win32的原生文件格式.每一个Win32可执行文件都遵循PE文件格式.对PE文件格式的了解可以加深你对Win32系统的深入理解. 一. 基本结构. 上图便是PE文件的基本结构.(注意:DO ...
- 解析PE文件
最近在自学解析PE文件,根据小辣椒(CFF Explorer)以及各论坛上大佬的帖子,做了个黑屏打印PE文件的,历时7天完成,在此想跟有相关需要的同学们分享下思路,有不足之处也希望大家不吝赐教,指点出 ...
- Dotnet文件格式解析
0x0.序 解析过程并没有介绍对pe结构的相关解析过程,网上此类相关资料很多可自行查阅,本文只介绍了网上资料较少的从pe结构的可选头中的数据目录表中获取dotnet目录的rva和size,到完全解析d ...
- PeCheck
早上起来看到这个代码 整理一下 // PETableDlg.cpp : 实现文件 // #include "stdafx.h" #include "PECheck.h& ...
随机推荐
- Guitar Pro怎样可以快速打出三连音?
相信很多的音乐爱好初学者在使用入门编曲软件Guitar Pro的时候,都会碰到这样一个问题,很多乐谱中都出现了三连音,那么我们使用Guitar Pro的时候,如何能够打出三连音呢? 三连音,就是三等分 ...
- Web、OAuth2/SSO相关拾遗
OAuth2认证相关:(SSO资源访问流程也应类似设计,它与OAuth2第三方认证.授权不同,是同一个应用系统间的认证.授权过程,且需要实现一个点授权,可访问所有点,一个点退出,收回所有点授权,且有时 ...
- 带搜索框的jQuery下拉框插件
由于下拉框的条数有几十个,于是打算找一个可以搜索查找功能的下拉框,刚开始在网上看了几个,都是有浏览器兼容性问题,后来看到这个“带搜索框的jQuery下拉框美化插件 searchable”,看演示代码简 ...
- P5091 【模板】欧拉定理
思路 欧拉定理 当a与m互质时 \[ a^ {\phi (m)} \equiv 1 \ \ (mod\ m) \] 扩展欧拉定理 当a与m不互质且\(b\ge \phi(m)\)时, \[ a^b \ ...
- Tutorial on GoogleNet based image classification --- focus on Inception module and save/load models
Tutorial on GoogleNet based image classification 2018-06-26 15:50:29 本文旨在通过案例来学习 GoogleNet 及其 Incep ...
- 配置和运行 MatchNet CVPR 2015 MatchNet: Unifying Feature and Metric Learning for Patch-Based Matching
配置和运行 MatchNet CVPR 2015 GitHub: https://github.com/hanxf/matchnet 最近一个同学在配置,测试这个网络,但是总是遇到各种问题. 我也尝试 ...
- Python实现机器学习算法:逻辑回归
import numpy as np import matplotlib.pyplot as plt from sklearn.datasets.samples_generator import ma ...
- x=x+1,x+=1,及x++的效率哪个最高,为什么?
x=x+1: 1. 读取右X的地址 2. X+1 3. 读取左X的地址 4. 将右值传给左边的X x+=1: 1. 读取右边的x的地址 2. X+1 3 ...
- idea 常用设置初始化
1.idea中mybatis关联到mapper.xml文件 2.idea热部署设置 3.IDEA Properties中文unicode转码问题
- TensorFlow 安装以及python虚拟环境
python虚拟环境 由于TensorFlow只支持某些版本的python解释器,如Python3.6.如果其他版本用户要使用TensorFlow就必须安装受支持的python版本.为了方便在不同项目 ...


