相对虚拟地址解释,二进制文件概述

时间:2019-12-23 12:05来源:永利皇宫463手机版
《软件漏洞深入分析技艺》笔记 LANDVA是相对虚构地址(Relative VirtualAddress)的缩写,一概而论,它是叁个“相对”地址,也得以说是“偏移量”,PE文件的种种数据布局中涉嫌到地方的

《软件漏洞深入分析技艺》笔记

LANDVA是相对虚构地址(Relative Virtual Address)的缩写,一概而论,它是叁个“相对”地址,也得以说是“偏移量”,PE文件的种种数据布局中涉嫌到地方的字段大多数都以以RubiconVA代表的。

PE文件:

准确地说,福特ExplorerVA就是当PE文件棉被服装载到内部存款和储蓄器中后,有个别数据的职务相对于文件头的偏移量。比方,假若Windows装载器将多个PE文件装入 00400000h处的内部存款和储蓄器中,而有些节中的某些数据棉被服装入0040xxxxh处,那么那么些数额的本田UR-VVA正是(0040xxxxh- 00400000h)=xxxxh,反过来讲,将锐界VA的值加上文件棉被服装载的营地址,就能够找到数据在内部存款和储蓄器中的骨子里地址。

  PE(Portable Executable)是win32平台下可进行信守的数量格式。常常广泛的比方说*.exe和*.dll都是PE文件。

PE文件中现身RAV4VA的 概念是因为PE的内部存款和储蓄器印象和磁盘文件影像是莫衷一是的,同生机勃勃数据相对于文件头的偏移量在内部存款和储蓄器仲春在磁盘文件中大概是莫衷一是的,为了进步效能,PE文件头中使用的 都是内部存款和储蓄器影象中的偏移量,相当于哈弗VA。从图17.3中也能够拿到另八个结论,那正是EnclaveVA仅仅是对此处在节中的数据来说的,对于文本头和节表来讲不在乎奇骏VA和文件偏移,因为它们在被映射到内存中后无论是大大小小大概摇头都不会有别的改换。

  可试行文件:包括二进制代码,字符串,菜单,Logo,位图字体等。

 

  运营时操作系统会按PE文件的约定定位财富并装载入内部存款和储蓄器。可实践文件 ——>拆分——>若干多少节<——分歧的财富。

2、汇编中设想地址(VRA卡塔尔与公事偏移地址(FileOffset卡塔尔(قطر‎的互相转变:

  规范PE文件平时包涵:.text(编写翻译器发生,存放二进制代码, 反汇编和调和的对象)、.data(起头化数据块)、.idata(使用的外来函数如动态链接库与公事音信卡塔尔、.rsrc(寄放程序能源),还包涵别的如.reloc、.edata、.tls、.rdata等。

+---------+---------+---------+---------+---------+---------+

设想内部存款和储蓄器:

|  段名称   设想地址  虚构大小  物理地址  物理大小   标记   |

  Windows内部存款和储蓄器:1.大要内部存款和储蓄器层面;2.虚构内部存款和储蓄器层面。

+---------+---------+---------+---------+---------+---------+

  物理内部存款和储蓄器经常内核等级ring0本事收看;平日客商格局下见到的为Windows顾客态内部存款和储蓄器映射机制下的虚构内部存款和储蓄器。

|  Name     VOffset    VSize    ROffset    RSize      Flags |

  内部存款和储蓄器微处理器能够使进度在实际唯有512MB物理内部存储器的情景下使进度“以为”本身具备4GB内部存储器(个中囊括代码, 栈空间,能源区,动态链接库等)。

+---------+---------+---------+---------+---------+---------+

图片 1

|  .text   00001000   00000092  00000400  00000200  60000020|

  这种意况和实在生活中银行日常,你要求用的钱其实并不等于你全部的财物,银行其实具有的金额数稍低于全体储户的财富和。

|  .rdata  00002000   000000F6  00000600  00000200  40000040|

  那万风华正茂有客商供给收取超超过实际际金额数咋办,操作系统原理中有“虚构内部存款和储蓄器”概念, 即在这里种情形下有时会将“部分硬盘空间”近来作为内部存款和储蓄器使用。(两个“设想内存“概念对象分化,不宜同日来说)

|  .data   00003000   0000018E  00000800  00000200  C0000040|

PE文件与虚构内部存款和储蓄器之间的照射

|  .rsrc   00004000   000003A0  00000A00  00000400  C0000040|

  (1).文件偏移地址(File Offset):数据在PE文件中的地址,在磁盘上存放时相对于文件开首的摇晃。

+---------+---------+---------+---------+---------+---------+

  (2).装载基址(Image Base):PE装入内部存款和储蓄器时的集散地址。暗许EXE文件在内部存款和储蓄器中的集散地址为0x00400000,DLL为0x10000000。当然位置可由编写翻译选项校正。

文件虚构偏移地址和文书物理偏移地址的计算公式如下:

  (3).虚构内部存款和储蓄器地址(Virtual Address,VA):PE文件中的指令棉被服装入内存后的地点。

 

  (4).绝对虚构地址(Relative Virtual Address,EvoqueVA):内部存款和储蓄器地址绝对于映射基址(即装载基址)的偏移量。

>>>>>>>VaToFileOffset( 设想地址转文件偏移地址卡塔尔

  VA、Image Base、ENCOREVA之间关系:

如VA = 00401000 (设想地址卡塔尔国

        VA = Image Base + RVA;

ImageBase = 00400000 (基地址)

  可分晓为: 实际 = 基点 + 位移.

V福特Explorerk = VOffset - ROffset = 00001000 - 00000400 = C00 (得出文件设想地址和文件物理址之间的VEvoquek值卡塔尔(英语:State of Qatar)

  暗许情形下:常常PE文件的0字节 =》设想内存0x00400000地方,即所谓的装载地方。

FileOffset = VA - ImageBase - VENVISIONk = 00401000 - 00400000 - C00 = 400(文件物理地址的舞狮地址卡塔尔

 

 

  装载PE文件时,文件偏移地址(磁盘上)与福特ExplorerVA(内部存款和储蓄器上)有一点都不小学一年级致性(操作系统会全心全意保持PE中各数据布局),那一点差距也未有会有细微差距,由文件数量和内部存款和储蓄器数据的贮存单位差别形成。

如VA = 00401325,则:

  在PE文件中,以磁盘数据正式寄放(我们精通硬盘以贰个section为大旨单位,即512byte),0x200字节,当一个数据节不足0x200字节时填充0x00;

FileOffset = VA - ImageBase - VRk = 00401325 - 00400000 - C00 = 725

  而在内部存款和储蓄器中,则以0x1000字节(4byte)为主干单位开展团队,其余与前面四个近似。

 

 

>>>>>>FileOffsetToVa( 文件偏移地址转虚构地址卡塔尔(قطر‎

  在进展File Offset和VA换算时,会由存款和储蓄单位引起节基址差称为节偏移。比方:

如FileOffset = 435(文件偏移地址卡塔尔(英语:State of Qatar)

图片 2

VA = FileOffset + ImageBase + VQashqaik = 435 + 00400000 + C00 = 00401035(设想地址卡塔尔国

  则有:

 

图片 3

源文档 <>

  那么就足以测算出:

 

  FileOffset = VA - Image Base -节偏移

        = VA - Image Base - (相对虚构偏移量 - 文件偏移量)

  按上表,比方总括设想内部存款和储蓄器中0x00404141处的一条指令,要换算出该指令在文书中的偏移量:

      文件偏移量 = 0x00404141 - 0x00400000(默许的Image Base)-(0x1000 - 0x400卡塔尔(英语:State of Qatar)(代码存于.text文件中) = 0x3541

 

  一些PE工具也提供那类地址转变:Lord PE.

 =_=..

编辑:永利皇宫463手机版 本文来源:相对虚拟地址解释,二进制文件概述

关键词: