EXE格式:修订间差异
外观
删除的内容 添加的内容
补救2个来源,并将0个来源标记为失效。) #IABot (v2.0.7 |
补救2个来源,并将0个来源标记为失效。) #IABot (v2.0.7 |
||
第36行: | 第36行: | ||
== 外部链接== |
== 外部链接== |
||
* [http://dependencywalker.com/ Dependency Walker] |
* [http://dependencywalker.com/ Dependency Walker]{{Wayback|url=http://dependencywalker.com/ |date=20170513073015 }}{{en}} |
||
* [http://www.delorie.com/djgpp/doc/exe/ MZ EXE header format] |
* [http://www.delorie.com/djgpp/doc/exe/ MZ EXE header format]{{Wayback|url=http://www.delorie.com/djgpp/doc/exe/ |date=20180106214000 }}{{en}} |
||
{{Executables}} |
{{Executables}} |
2020年12月7日 (一) 23:03的版本
EXE是在OS/2、MS-DOS和Windows系统中通用的可执行文件的扩展名。
檔案格式
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 95和Windows 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 開頭格式說明
- 00-01h:MZ标志,MS-DOS开发者之一的馬克·茨柏克沃斯基(Mark Zbikowski)的姓名首字母缩写。
- 02-03h:EXE文件最后一个块没有全用完只用了N个字节,即文件长度除以512的余数。
- 04-05h:EXE文件使用的块的数量(每块512个字节),文件长度除以512的商
- 06-07h:重定向项目的个数。
- 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标明。
外部链接
- Dependency Walker(页面存档备份,存于互联网档案馆)(英文)
- MZ EXE header format(页面存档备份,存于互联网档案馆)(英文)