美文网首页
windows 进程运行过程

windows 进程运行过程

作者: 看点书 | 来源:发表于2018-05-10 20:30 被阅读0次

                                                                windows 进程运行过程

    1 创建进程内核对象

            进程创建的时候(调用NtCreateProcess时),系统会创建一个被称为内核对象的对象,即进程内核对象,用来管理进程的内核对象,其中进程内核对象维护一个叫做句柄表的结构。进程初始化时为空,当进程的线程调用内核对象函数创建内核对象的时候,内核会为这个对象分配一块内存区域并初始化,然后内核会在句柄表中找到一个空的入口,找到以后初始化句柄表以索引刚刚那片区域。

    2 创建进程的虚拟地址空间    

          进程内核对象被创建以后,系统会为其分配4G(32位)的进程虚拟空间,每个进程只能访问自己虚拟地址空间的内容,其中这个虚拟地址空间被分为四部分,NULL指针去,用户区,64kb禁入区,内核区.

    3 初始化进程的虚拟地址空间

            进程创建结束以后,windows装载器开始装载PE文件,大致过程如下:

            先读入PE文件的DOS头,PE头和Section头。

            然后根据PE头里的ImageBase所定义的加载地址是否可用,如果已被其他模块占用,则重新分配一块空间。

            根据Section头部的信息,把文件的各个Section映射到分配的空间,并根据各个Section定义的数据来修改所映射的页的属性。

             如果文件被加载的地址不是ImageBase定义的地址,则重新修正ImageBase。

             根据PE文件的输入表加载所需要的DLL到进程空间。

            然后替换IAT表内的数据为实际调用函数的地址。

             根据PE头内的数据生成初始化的堆和栈。

    4 创建进程的主线程

            当进程的初始化完成后, 开始创建进程的主线程, 一个进程至少要有一个主

    线程才能运行, 可以说进程只是充当一个容器的作用, 而线程才是执行用户代码

    的载体

    相关文章

      网友评论

          本文标题:windows 进程运行过程

          本文链接:https://www.haomeiwen.com/subject/cmqdrftx.html