gpt4 book ai didi

windows - .exe 文件中有什么?

转载 作者:可可西里 更新时间:2023-11-01 12:06:31 24 4
gpt4 key购买 nike

那么.exe文件就是可以被windows执行的文件,但是它到底包含什么呢?特定于处理器的汇编语言?还是某种由 Windows 识别的中间语句将其转换为特定处理器的程序集? Windows 在“执行”文件时究竟对文件做了什么?

最佳答案

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

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

我建议您获取 Windows Internals 的副本有关运行 exe 时发生的情况的完整描述。

对于 native 可执行文件,机器代码是特定于平台的。 .exe 的 header 指示 .exe 适用的平台。

运行 native .exe 时会发生以下情况(已大大简化):

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

托管可执行文件包含 MSIL(Microsoft 中间语言)并且可以编译,因此它们可以针对 CLR 支持的任何 CPU。我不太熟悉 CLR 加载程序的内部工作原理( native 代码最初运行什么来引导 CLR 并开始解释 MSIL)——也许其他人可以对此进行详细说明。

关于windows - .exe 文件中有什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1495638/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com