因此,一個.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