Windows进程数据结构及创建流程

数据结构

每个Windows进程都表现为一个executive进程(EPROCESS)结构,除了包括很多进程相关的属性外,还包括一些指针。比如,每个进程都有一个或多个线程,每个线程都是executive线程(ETHREAD)结构。

EPROCESS 和大多数与其相关的数据结构存在于系统的地址空间中,有一个例外是进程的环境块PEB(process environment block ),存在于进程的地址空间中(用于被用户模式的代码访问)。另外,进程的有些数据结构用于内存管理,比如working set列表,只有在当前进程上下文才有效,因为它们存储在进程特有的系统空间内。

每个执行Win32程序的进程,Win32子系统进程(Csrss.exe)维护一个叫做CSR_PROCESS的并行的结构。最后,内核模式部分的Win32子系统(Win32k.sys)维护每个进程的数据结构,W32PROCESS。W32PROCESS结构在线程第一次调用Windows USER函数或GDI函数时创建。

下图是进程和线程数据结构的简化图表:


下图是EPROCESS 的结构.


类似于内核API和组件划分成独立两部分并且分层成模块的方式,进程的数据结构也差不多的设计。

下图是PEB的数据结构:


下图是CSR_PROCESS的数据结构:



进程的创建流程

因为Windows是多环境子系统架构,创建一个executive进程对象与创建子系统进程是分开的。下面总结了CreateProcess()函数的几个主要步骤,每个步骤的可能是由CreateProcess()函数自己操作的,也可能是NtCreateProcess()函数或者它在内核模式下的辅助函数。当应用程序调用CreateProcess,CreateProcessAsUser,CreateProcessWithTokenW,CreateProcessWithLogonW等系统函数时,Windows子系统进程就被创建了。下面是具体步骤:
  1. 验证参数,将Windows子系统标记和选项转换成native对应的部分。
  2. 打开 进程中要被执行的image文件(.exe)。
  3. 创建Windows executive进程对象。
  4. 创建初始化线程(栈,上下文,Windows executive线程对象)。
  5. 初始化进程。
  6. 开始执行初始化线程。
  7. 完成地址空间的初始化,开始执行程序。




  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VB是一种编程语言,可以用来开发各种软件应用程序。下面是从源程序分析流程图的步骤: 1. 首先,要打开VB开发环境并创建一个新的项目。在VB中,可以选择创建控制台应用程序、Windows窗体应用程序等不同的项目类型,根据实际需要选择相应的项目类型。 2. 在新项目中,打开源程序文件(通常是以.vb为扩展名的文件)。源程序是包含VB代码的文件,它包含了实现特定功能的程序代码。 3. 阅读源程序内容,了解代码的结构和逻辑。源程序中通常包含一系列的模块、函数、子过程和变量等。通过了解这些代码,可以更好地理解程序的实现过程。 4. 根据源程序内容,可以开始分析流程图。流程图是一种图形化表示程序运行流程的工具,它使用各种图形符号表示程序的控制结构和数据流动。 5. 根据源程序中的代码逻辑,使用流程图符号将代码转换成流程图中的相应结构。例如,使用矩形表示顺序执行的代码块,使用菱形表示条件判断语句,使用箭头表示程序的控制流程等。 6. 分析源程序中的循环结构和逻辑分支,并在流程图中正确地表示它们。循环结构可以使用圆角矩形表示,逻辑分支可以使用菱形表示。 7. 根据源程序中的函数和子过程,将它们在流程图中以适当的方式表示出来。函数和子过程可以使用矩形框表示,并用箭头连接到调用它们的地方。 8. 最后,对整个源程序进行综合分析,检查流程图的准确性和完整性。确保流程图能够完整地表示程序的所有控制流程和数据流动。 通过以上步骤,可以从源程序中分析出对应的流程图。流程图是一种形象直观的表达方式,有助于理清程序逻辑和结构,方便后续的编码和调试工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值