PE文件的装载过程(3) 

紧接着IMAGE_FILE_HEADER结构的是IMAGE_OPTIONAL_HEADER32结构,这个结构称为可选头, 其中定义了很多重要的信息,可选头的结构如下所示:

 

Code
IMAGE_OPTIONAL_HEADER32 STRUCT

  Magic WORD ? ; 107h=ROM Image,10Bh=exe Image
  MajorLinkerVersion BYTE ? ;  链接器版本号
  MinorLinkerVersion BYTE  ? ; 
  SizeOfCode DWORD ? ;  所有含代码的节的总大小
  SizeOfInitializedData DWORD? ; 所有含已初始化数据的节的总大小
  SizeOfUninitializedData DWORD ? ; 所有含未初始化数据的节的大小
  AddressOfEntryPoint DWORD ? ;程序执行入口RVA
  BaseOfCode DWORD ? ;代码的节的起始RVA
  BaseOfData DWORD ? ;数据的节的起始RVA
  ImageBase  DWORD ? ;程序的建议装载地址
  SectionAlignment DWORD ? ;内存中的节的对齐粒度
  FileAlignment  DWORD ? ;文件中的节的对齐粒度
  MajorOperatingSystemVersion   WORD  ? ;操作系统主版本号
  MinorOperatingSystemVersion   WORD  ? ;操作系统副版本号
  MajorImageVersion WORD  ? ;可运行于操作系统的最小版本号
  MinorImageVersion WORD  ? ;
  MajorSubsystemVersion WORD ?;可运行于操作系统的最小子版本号
  MinorSubsystemVersion WORD  ? ;
  Win32VersionValue DWORD ? ;未用
  SizeOfImage DWORD ? ;内存中整个PE映像尺寸
  SizeOfHeaders DWORD ? ;所有头+节表的大小
  CheckSum  DWORD ? ;
  Subsystem WORD  ? ;文件的子系统
  DllCharacteristics WORD  ? ;
  SizeOfStackReserve DWORD ? ;初始化时的堆栈大小
  SizeOfStackCommit DWORD ? ;初始化时实际提交的堆栈大小
  SizeOfHeapReserve DWORD ? ;初始化时保留的堆大小
  SizeOfHeapCommit DWORD ? ;初始化时实际提交的堆大小
  LoaderFlags  DWORD ? ;未用
  NumberOfRvaAndSizes DWORD ? ;下面的数据目录结构的数量
  DataDirectory IMAGE_DATA_DIRECTORY 16 dup(<>) ;
IMAGE_OPTIONAL_HEADER32 ENDS



这个结构中重要的元素有如下几个:

AddressOfEntryPoint:指出了可执行代码入口点在内存中的偏移(RVA),这个偏移是相对文件本装入内存以后此入口点相对文件头的偏移,由于PE文件在磁盘中和在内存中的对齐粒度不一样,一般情况下文件在内存中的对齐力度是1000h,而在磁盘中的对齐粒度是200h,也就是说文件在内存中占用的空间一般会大于在文件中占用的空间,所以导致可执行代码入口点的偏移在内存中和在磁盘中不同。

ImageBase:文件优先装入地址,对exe文件来说为400000h,对dll一般为10000000h,且一般情况下对exe文件不需要重定位文件在内存中位置,即文件优先装入地址为ImageBase地址,而dll很难满足。

SectionAlignment:文件在内存中的对齐粒度,即每个节在内存中的装入地址必须是本值的整数倍,值一般为1000h

FileAlignment:文件在磁盘中的对齐粒度,意义同SectionAlignment,值一般为200h

Subsystem:对windows下应用程序来说,如果程序是图形界面,其值为2,如果是控制台程序,值为3

DataDirectory:由16个IMAGE_DATA_DIRECTORY结构组成,用来定义不同用途的数据块在内存中的偏移和大小

0 0 0 
http://www.zeroplace.cn/article.asp?id=281   
PE文件的装载过程(1)
http://www.zeroplace.cn/article.asp?id=282
PE文件的装载过程(2)
http://www.zeroplace.cn/article.asp?id=283
PE文件的装载过程(3)
http://www.zeroplace.cn/article.asp?id=284
PE文件的装载过程(4)

(请您对文章做出评价)


[本日志由 admin 于 2010-04-10 06:13 PM 编辑]

有什么问题可以加群,100852896
点击这里加入此群 在线提问
文章来自: 本站原创
Tags: 文件 pe 格式 资源 汇编
评论: 0 | 查看次数: 6576
博主QQ: 友情链接请找我
QQ群: 灰色档案
返回顶部 关闭