本页使用了标题或全文手工转换

EXE格式

维基百科,自由的百科全书
跳到导航 跳到搜索

EXE是在OS/2MS-DOSWindows系统中通用的可执行文件扩展名

檔案格式[编辑]

EXE 包括以下几种主要的文件格式

  • DOS可执行文件:最简单的可执行文件格式,可以在DOS和Windows中运行。它通过在文件头添加ASCII字符串“MZ”(16进制中表示为4D5A)来标识。“MZ”是MS-DOS开发者之一的馬克·茨柏克沃斯基(Mark Zbikowski)的姓名首字母缩写。
  • 16位元新可执行文件:通过在文件头添加ASCII字符串“NE”来标识。它只能运行在Windows和OS/2系统,而不能在DOS下运行。
  • 16/32位元混合式线性可执行文件:通过在文件头添加ASCII字符串“LE”来标识。它仅用来在Windows 3.x和Windows 9x中替代VxD驱动。
  • 32位元线性可执行文件:通过在文件头添加ASCII字符串“LX”来标识。运行在OS/2 2.0以及更高版本中,也可用于某些DOS扩展。
  • 32位元可执行文件:这是最复杂也是目前最流行的可执行文件格式,通过在文件头添加ASCII字符串“PE”来标识。它主要运行于Windows 95Windows NT以及更高版本的Windows中,也可在BeOS R3中运行。在文件头部可见字符串“PE..L”(hex code: 504500004C)。
  • 64位元可执行文件:与前一种类似,但使用支持64位元的中央处理器。因此它仅能在64位元的Windows系统中运行,譬如Windows XP 64-Bit Edition和Windows Server 2003 64-Bit Edition。在文件头部可见字符串“PE..d†”(hex code: 504500006486)。

DOS EXE 開頭格式說明[编辑]

  • 02-03h:EXE文件最后一个块没有全用完只用了N个字节,即文件长度除以512的余数。
  • 04-05h:EXE文件使用的的数量(每块512个字节),文件长度除以512的
  • 08-09h:该处数据指出了EXE头部大小,一般来说,EXE头部之后紧跟着程序数据。
  • 0A-0Bh:该处数据指出了运行该程序所需的最小内存,如果小于这个内存,程序将不会被加载执行。
  • 0C-0Dh:该处数据指出了运行该程序所需的最大内存,一般为FFFFh。
  • 0E-0Fh:堆栈段在装入模块中的偏移,如:00E5h
  • 10-11h:SP初始值,如:0080h。即SS:SP=00E5:0080。
  • 14-15h:IP初始值。
  • 16-17h:CS在装入模块中的偏移。
  • 18-19h:指出了第一个重定向项目在文件中的偏移,
  • 1A-1Bh:覆盖号(程序驻留为零)。
  • 1C:重定位表,起点由偏移18-19h给出,项数由06-07h标明。

外部链接[编辑]