位图字体等。《软件漏洞深入分析技巧》笔记

位图字体等。PE文件:

  PE(Portable
Executable)是win32平台下可施行坚决守住的多寡格式。日常大范围的比如*.exe和*.dll都是PE文件。

  可推行文件:富含二进制代码,字符串,菜单,Logo,位图字体等。

位图字体等。  运行时操作系统会按PE文件的预订定位能源并装载入内存。可执行文件
——>拆分——>若干多少节<——区别的财富。

  规范PE文件平日包涵:.text(编译器产生,存放二进制代码,
反汇编和调节和测试的靶子)、.data(最早化数据块)、.idata(使用的外来函数如动态链接库与公事音讯卡塔尔国、.rsrc(贮存程序财富),还包含别的如.reloc、.edata、.tls、.rdata等。

设想内部存款和储蓄器:

位图字体等。  Windows内部存款和储蓄器:1.物理内部存款和储蓄器层面;2.虚构内部存款和储蓄器层面。

  物理内部存储器经常内核等级ring0才干观察;平常顾客形式下见到的为Windows客商态内部存款和储蓄器映射机制下的虚构内部存款和储蓄器。

位图字体等。  内部存款和储蓄器微机能够使进度在其实独有512MB物理内部存款和储蓄器的意况下使进度“感觉”本身装有4GB内部存款和储蓄器(在那之中囊括代码,
栈空间,能源区,动态链接库等)。

图片 1

  这种状态和实在生活中国际清算银行行行日常,你要求用的钱其实并不等于你有所的财物,银行其实具备的金额数稍低于全体储户的财富和。

  那万生龙活虎有客商供给抽取超超过实际际金额数怎么办,操作系统原理中有“虚构内部存款和储蓄器”概念,
即在此种气象下不常会将“部分硬盘空间”权且作为内部存储器使用。(两个“虚构内部存款和储蓄器“概念对象差别,不宜同日而论)

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

  (1).文件偏移地址(File Offset):数据在PE文件中的地址,在磁盘上贮存时绝对于文件起始的舞狮。

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

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

  (4).相对设想地址(Relative Virtual
Address,途乐VA):内部存款和储蓄器地址相对于映射基址(即装载基址)的偏移量。

  VA、Image Base、RubiconVA之间关系:

        VA = Image Base + RVA;

  可清楚为: 实际 = 基点 + 位移.

  默许景况下:常常PE文件的0字节
=》设想内部存款和储蓄器0x00400000岗位,即所谓的装载地方。

 

  装载PE文件时,文件偏移地址(磁盘上)与本田UR-VVA(内部存款和储蓄器上)有极大学一年级致性(操作系统会一心一意保障PE中各数据布局),那点差异也未有会有细微差距,由文件数量和内部存储器数据的寄放单位分化变成。

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

  而在内部存款和储蓄器中,则以0x1000字节(4byte)为宗旨单位进行共青团和少先队,别的与前面一个相通。

 

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

图片 2

  则有:

图片 3

  那么就足以测算出:

  FileOffset = VA – Image Base -节偏移

        = VA – Image Base – (相对设想偏移量 – 文件偏移量)

  按上表,举个例子总括虚构内部存款和储蓄器中0x00404141处的一条指令,要换算出该指令在文书中的偏移量:

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

 

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

 =_=..