- 1、本文档共32页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
可执行文件格式
可执行文件格式
1、裸机中的可执行文件没有文件头部,是纯代码文件。因为没有操作系统,不
能依靠加载器构建可执行程序的映像。故一般裸机中的执行文件都没有文件格
式。
2、标准的Dos可执行文件包括批处理文件、Dos下的可加载驱动程序(.SYS)
文件以及普通的.COM、.EXE可执行文件。
批处理文件,是以.BAT结尾的文件,在.BAT文件中可以包括一些DOS命
令,以及在批处理文件中调用其它的可执行文件。批处理文件还有一些简单的流
程控制功能,可以实现循环、条件判断等简单的编程工作。
设备驱动文件,是以.sYS结尾的文件,如config.SYs和IO.sys等,是Dos
操作系统使用的设备驱动程序。
COM文件,是以.COM结尾的纯代码文件。没有文件头部分,默认情况下
总是从0xl00H处开始执行,没有重定位项,这也限制了它所有代码和数据必须
控制在64KB以内。
EXE文件,是以.EXE结尾的文件,这种文件以英文字母MZ开头,通
常称之为MZ文件。MZ文件有一个文件头,用来指出每个段的定义,以及重定
位表。.EXE文件摆脱了代码大小最多不能超过64KB的限制,是DOS下,最主
要的文件格式。
MZ文件的格式:MZ文件由三部分构成:文件头、重定位表和二进制代码。
Mz文件头包含Ms-Dos用于加载程序的信息,例如程序的大小和寄存器的初始
值。文件头还指向一个重定位表,该表包含指向程序映像中可重定位段的指针链
表。文件头的格式用EXEHHEADER结构定义如下(注释符号后面的十六进制
表示相应字段的偏移)
EXEHEADER STRUC exsi,ature dw?;00H,文件类型标记:ox4DSA(ASCll字符Mz)
exExraBytes dw?;oZH,文件最后一页的字节数(51ZB一页)
exPages dw?;04H,文件的总页数
exRefocltems dw?;06H,重定位项的个数
exHeadersize dw?;0SH,以字节为单位的文件头大小
exMIILAlfoo dw?;0AH,根据代码大小分配的最小内存
exMaxAlloc dw?;OCH,根据代码大小分配的最大段(Para歹aph)数
exlnitSS dw?;0EH,初始55值,相对于入口点
exlnitSP dw?;1OH,初始SP值
exChechsum dw?;12H,校验和或者零
exlnitIP dw?;14H,初始IP值
exlnitCS dw?;16H,初始CS值,相对入口点
exRelocTable dw?;lSH,重定位表的偏移地址
exoverlay dw?;IAH,连接程序产生的覆盖号
EXEHEADER ENDS
下面简单介绍DOS下.EXE文件的加载过程。
MZ文件包含一个文件头和一个可重新定位程序映像(载入模块)。文件头
包含MS一DOS用于加载程序的信息,例如程序的大小和寄存器的初始值。程序
映像包含处理器代码和程序的初始数据,它紧接在文件头之后,它的大小等于
MZ文件大小减去文件头的大小。MS一DOS通过把该映像直接从文件复制到内存
加载EXE程序,然后调整定位表中说明的可重定位段的地址。
重定位表示一个重定位指针数组,每个指针指向程序影响中的可重定位段地
址。文件头中的偏移06H处说明了数组中指针的个数。偏移18H处指向重定位
表的指针链表。每个重定位指针由两个16位值(即偏移量和段地址)组成。
3、诚ndows下的可执行文件格式
NE格式:
Windows3.0/3.1版本中,微软推出了一种新的可执行文件格式,在MZ
文件头之后又有一个以NE开始的文件头,称之为NE(NewExecutable)文件。
由于Windows的可执行文件同DOS相比增加了很多内容,如资源、动态库等,
NE格式表现极为复杂,NE格式文件在装载程序读取磁盘上的文件后,需要在
内存中组装成一个完全不同的数据结构才开始运行。
PE格式:
在Windows32位平台微软又推出了一种新的可执行文件格式-可移植的可执行文件
(PortableExecutable File)格式。即PE格式。它同NE格式不同的是在MZ文件头之后是
一个以PE开始的文件头。PE文件格式是从COFF(UNIX中广泛使用的通用二进制文件
格式)的对象格式发展而来,它比NE格式前进了一大步,其文件在磁盘中的格式同内存
中的格式区别不大,装载程序实现起来相当简单。
PE文件格式被组织为一个线性的数据流,它由一个MS一DOS头部开始,接
着是一个是模式的程序残余以及一个PE文件标志,这之后紧接着PE文件头和
可选头部。这些之后是所有的段头部,段头部之后跟随着所有的段实体。文件的
结束处是一些其它的区域,其中是一些混杂的信息,包括重分配信息、符号表信
息、行号信息以及字串表
文档评论(0)