什么是.exe文件?

Gor*_*son 33 windows executable exe

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

Mic*_*ael 40

MSDN有一篇文章" 深入研究Win32可移植可执行文件格式 ",它描述了可执行文件的结构.

基本上,.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) - 也许其他人可以详细说明.


kct*_*ang 12

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

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

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

  • 可爱而有趣(我肯定会关注这个链接),但与手头的问题并不十分相关. (4认同)

Nic*_*ord 10

1和0!

此维基百科链接将为您提供有关用于Windows应用程序的可移植可执行文件格式所需的所有信息.

  • 在我的日子里,我们没有1,我们不得不用0做 (6认同)