因此,一个.exe文件是一个可以由Windows执行的文件,但它包含了什么?汇编语言是处理器特定的?或者某种中间语句被windows所识别,并将其转换为特定处理器的汇编语言?当它“执行”它时,窗口对文件做了什么?.exe文件包含什么内容?
回答
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和0的!
This wikipedia link将为您提供有关用于Windows应用程序的便携式可执行文件格式所需的全部信息。
我刚刚低估了你的一个愚蠢的答案,直到我看到“这”实际上是一个链接,而不是对“1和0”的引用。希望你不要介意我是否编辑它使它更清晰 – paxdiablo 2009-09-30 01:43:14
在我的日子里,我们没有1s我们必须做0s – 2011-12-20 17:08:57
我可以告诉你.exe文件中的前两个字节包含 - 'MZ'。我的意思是人物'MZ'。
它实际上代表:Mark Zbikowski。那个设计exe文件格式的人。
可爱和有趣的(我肯定会跟随该链接),但不与手头的问题非常相关。 – Twisol 2009-09-30 01:06:04
是的,虽然是一个有趣的代码片段,但它只能解释PE文件的前两个字节。这不是很多,百分比。 – paxdiablo 2009-09-30 02:06:20
出于好奇:他是否为微软设计过它? – MasterMastic 2015-03-13 17:09:49
的EXE文件确实是一种被称为可移植可执行文件。它包含二进制数据,可以被处理器读取并执行(基本上是x86指令。)还有一个很多标题数据和其他杂项内容。实际的可执行代码位于名为.text
的部分,并作为机器指令(与处理器相关)存储。该代码(以及.EXE的其他部分)被放入内存,并且CPU被发送到它,它开始执行。 (请注意,实际发生的接口更多,这是一个简单的解释)。
- 1. .EXE文件包含的内容
- 2. jar文件包含什么内容?
- 3. 目标文件包含什么内容?
- 4. currentDesign.writeCssincludes包含什么内容?
- 5. system.in包含什么内容?
- 6. 包含文件内容php
- 7. 就BSS,DATA,TEXT段而言,a.out文件包含什么内容?
- 8. Linux进程文件包含什么内容?
- 9. MST为什么不包含具有不同内容的文件
- 10. * .suo文件中包含的内容是什么?
- 11. 授权码包含什么内容?
- 12. 在JSP中包含文件的内容
- 13. 附加文件包含页面内容
- 14. 包含JavaScript文件的内容
- 15. * .sql文件包含的内容
- 16. 包含文件及其内容
- 17. 处理包含内容的文件
- 18. 将资源包含到EXE文件中
- 19. ASP.NET Core自包含的exe文件
- 20. 以PHP格式包含文件显示错误和包含文件的内容
- 21. .gem文件包含什么内容? Rails框架如何使用它?
- 22. 为什么Laravel 5包含应用程序文件夹下的所有内容?
- 23. Joomla,包含内容
- 24. 包含XHTML内容
- 25. 从字符的cout exe文件内容
- 26. 为什么包含标准头文件?
- 27. 制作jar文件时包含什么?
- 28. 什么weblogic jar文件包含com.bea.logging.BaseLogRecord?
- 29. SiteFinity:在内容块中包含本地文件内容的最简单方法是什么?
- 30. 如何在casper测试文件中包含文件内容?
该死的,打我吧! :) – 2009-09-30 00:53:14