一个exe可执行文件的生与死(运行原理)

一个exe可执行文件的生与死(运行原理)(转载)
这篇文章讲一个EXE文件从加载运行到结束的整个流程,感觉写的不错,  记录 共享下。

下面列的只是程序执行时的大概流程, 详见附件。

1、 ShellExplorer.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退出进程

完整文档: 一个exe可执行文件的生与死.doc
                 一个exe可执行文件的生与死.pdf

你可能感兴趣的:(一个exe可执行文件的生与死(运行原理))