这篇文章讲一个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
posted on 2014-04-05 11:48 Richard Wei 阅读(2427) 评论(0)  编辑 收藏 引用 所属分类: windows desktop

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理