一個exe可執行檔案的生與死(執行原理)(轉載)
阿新 • • 發佈:2018-12-27
這篇文章講一個EXE檔案從載入執行到結束的整個流程,感覺寫的不錯, 記錄並共享下。
下面列的只是程式執行時的大概流程,詳見附件。
下面列的只是程式執行時的大概流程,詳見附件。
1、Shell(Explorer.exe)呼叫CreateProcess函式啟用exe程式
2、系統建立一個程序核心物件,引用計數置為1
3、系統為程序建立一個4GB的程序虛擬地址空間
4、PE裝載器把exe的程式碼對映到地址空間,並查詢Import Table引入相關
的動態連結庫(DLLs)
5、系統為程序建立一個主執行緒,執行緒得到CPU後,把CS:IP指向.text節中
的程式進入點(OEP),此處是一條JMP指令,它跳到XXXCRTStartup
函式處執行
6、這裡完成c/c++執行期庫的一些初始化設定,包括c++建構函式的呼叫
全域性變數,靜態變數的初始化
7、呼叫WinMain/main函式,進入主函式
8、註冊視窗類,建立視窗,顯示視窗,更新視窗,進入訊息迴圈
9、視窗關閉,迴圈退出,返回到C/C++執行期庫
10、完成一些清理工作
11、最後是ExitProcess退出程序