什么是.exe文件?

时间:2009-09-30 00:48:13

标签: windows executable exe

因此.exe文件是一个可以由Windows执行的文件,但它究竟包含什么?处理器特定的汇编语言?或者是某些被Windows识别的中间语句将其转换为特定处理器的程序集? Windows在“执行”文件时对文件做了什么?

4 个答案:

答案 0 :(得分:40)

MSDN有一篇文章“An In-Depth Look into the Win32 Portable Executable File Format”,它描述了可执行文件的结构。

基本上,.exe包含几个数据块和有关如何将它们加载到内存中的说明。其中一些部分碰巧包含可以执行的机器代码(其他部分包含程序数据,资源,重定位信息,导入信息等)。

我建议您获取Windows Internals的副本,以获取运行exe时会发生什么的完整描述。

对于本机可执行文件,机器代码是特定于平台的。 .exe的标题表示.exe的用途。

运行本机.exe时会发生以下情况(非常简化):

  • 创建了一个流程对象。
  • exe文件被读入该进程的内存。 .exe(代码,数据等)的不同部分分别映射并赋予不同的权限(代码是执行,数据是读/写,常量是只读的。)
  • 重定位发生在.exe中(如果.exe未在其首选地址加载,则会对地址进行修补。)
  • 导入导入表并加载相关的DLL。
  • DLL以类似于.exe的方法映射,重定位发生并且其依赖DLL被加载。 DLL的导入函数已解决。
  • 该过程在NTDLL中的初始存根处开始执行。
  • 初始加载程序存根运行每个DLL的入口点,然后跳转到.exe的入口点。

托管可执行文件包含MSIL(Microsoft中间语言),可以编译,以便它们可以针对CLR支持的任何CPU。我并不熟悉CLR加载器的内部工作原理(本机代码最初用于启动CLR并开始解释MSIL) - 也许其他人可以详细说明。

答案 1 :(得分:12)

我可以告诉你.exe文件中的前两个字节包含什么 - 'MZ'。我的意思是人物'MZ'。

它实际上代表:Mark Zbikowski。设计exe文件格式的人。

http://en.wikipedia.org/wiki/Mark_Zbikowski

答案 2 :(得分:9)

1和0!

This wikipedia link将为您提供用于Windows应用程序的可移植可执行文件格式所需的所有信息。

答案 3 :(得分:1)

EXE文件实际上是一种称为可移植可执行文件的文件。它包含二进制数据,可以由处理器读取并执行(基本上是x86指令)。还有一个很多的头数据和其他杂项内容。实际的可执行代码位于名为.text的部分中,并存储为机器指令(特定于处理器)。这段代码(以及.EXE的其他部分)被放入内存,CPU被发送到它,它开始执行。 (请注意,实际发生了更多接口;这是一个简化的解释)。