进程环境块 进程环境块PEB是 Windows NT操作系统内部使用的数据结构用以存储每个进程的运行时数据 Microsoft的MSDN文档中仅公开了PEB的少数几个域该结构在未来的Windows版本中可能会修改PEB包含的数据结构适用于整个进程如全局上下文启动参数程序image装载器的数据结构程序image的基地址进程级互斥同步访问对象等 PEB与kernel mode EPROCESS数据结构密切相关也是逐进程数据结构在客户服务器运行时子系统CSRSS进程地址空间被管理但是类似于CSRSS数据结构PEB自身并不是内核模式数据结构它驻留在所关联的进程的用户态内存空间中这是因为它被设计为被操作系统的用户态的程序所使用如NTDLL在内核态之外执行如程序映象的加载器与堆管理器 WinDbg中卸载PEB内容的命令是peb命令参数是PEB在进程地址空间的地址它实际上是通过process命令获取将显示来自于EPROCESS数据结构的信息其中一个域是PEB地址 PEB的内容通过系统调用NtCreateUserProcess初始化该系统调用也是Native API的Win函数 CreateProcess CreateProcessAsUser CreateProcessWithTokenW CreateProcessWithLogonW 在kerneldll 与advapidll中的实现基础也是Windows NT POSIX的posixdll中的API函数Fork的实现基础 对于Windows NT POSIX进程新进程的PEB内容通过简单直接复制父进程的PEB来初始化NtCreateUserProcess 这是在fork函数内部实现对于Win进程新进程的PEB的初始化主要来自内核维护的全局变量但几个域的初始化来自程序映象特别是来自PE文件格式PE 或 PE在位的IMAGEOPTIONALHEADER数据结构