2进制文件概述

《软件漏洞深入分析本事》笔记

PE文件:

  PE(Portable
Executable)是win3二平台下可实践坚守的数目格式。平常广大的诸如*.exe和*.dll都是PE文件。

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

  运营时操作系统会按PE文件的预订定位能源并装载入内部存款和储蓄器。可试行文件
——>拆分——>若干数额节<——分裂的能源。

  规范PE文件一般包涵:.text(编写翻译器发生,存放2进制代码,
反汇编和调护医疗的指标)、.data(开头化数据块)、.idata(使用的外来函数如动态链接库与公事新闻)、.rsrc(存放程序能源),还包蕴其余如.reloc、.edata、.tls、.rdata等。

虚拟内部存款和储蓄器:

  Windows内部存款和储蓄器:1.大意内部存款和储蓄器层面;二.虚拟内部存款和储蓄器层面。

  物理内部存款和储蓄器平常内核等第ring0手艺来看;经常用户情势下看见的为Windows用户态内部存款和储蓄器映射机制下的虚拟内部存款和储蓄器。

  内部存款和储蓄器管理器能够使进度在实际上只有51二MB物理内部存款和储蓄器的图景下使进度“感觉”本身具有4GB内存(个中包罗代码,
栈空间,财富区,动态链接库等)。

图片 1

  这种场馆和实际生活中国际清算银行行行一般,你必要用的钱其实并不等于你有着的财物,银行其实持有的金额数紧跟于全体储户的财物和。

  这万一有用户需求抽取凌驾实际金额数怎么办,操作系统原理中有“虚拟内部存款和储蓄器”概念,
即在这种气象下一时会将“部分硬盘空间”如今作为内部存款和储蓄器使用。(两个“虚拟内部存款和储蓄器“概念对象分裂,不宜混为一谈)

PE文件与虚拟内部存款和储蓄器之间的光彩夺目

  (一).文件偏移地址(File Offset):数据在PE文件中的地址,在磁盘上存放时相对于文件起初的撼动。

  (2).装载基址(Image Base):PE装入内部存款和储蓄器时的集散地址。暗中同意EXE文件在内部存款和储蓄器中的集散地址为0x00五千00,DLL为0x10000000。当然地点可由编写翻译选项改造。

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

  (肆).相对虚拟地址(Relative Virtual
Address,揽胜极光VA):内部存款和储蓄器地址相对于映射基址(即装载基址)的偏移量。

  VA、Image Base、奇骏VA之间涉及:

        VA = Image Base + RVA;

  可驾驭为: 实际 = 基点 + 位移.

  默许情形下:一般PE文件的0字节
=》虚拟内部存款和储蓄器0x00500000职位,即所谓的装载地方。

 

  装载PE文件时,文件偏移地址(磁盘上)与RVA(内存上)有比极大学一年级致性(操作系统会尽可能保持PE中各数据结构),那点差别也没有会有细微差距,由文件数量和内部存款和储蓄器数据的寄放单位区别形成。

  在PE文件中,以磁盘数据规范存放(大家知晓硬盘以1个section为着力单位,即51二byte),0x200字节,当3个数据节不足0x200字节时填充0x00;

  而在内部存款和储蓄器中,则以0x一千字节(四byte)为核心单位展开公司,别的与前者类似。

 

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

图片 2

  则有:

图片 3

  那么就能够总结出:

  FileOffset = VA – Image Base -节偏移

        = VA – Image Base – (相对虚拟偏移量 – 文件偏移量)

  按上表,例如计算虚拟内部存款和储蓄器中0x004041肆一处的一条指令,要换算出该指令在文书中的偏移量:

      文件偏移量 = 0x00404141 – 0x00四千00(暗许的Image
Base)-(0x1000 – 0x400)(代码存于.text文件中) = 0x35四1

 

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

 =_=..

相关文章