热门问题
时间线
聊天
视角

进程环境块

来自维基百科,自由的百科全书

Remove ads

进程环境块PEB)是 Windows NT操作系统内部使用的数据结构,用以存储每个进程运行时数据。[1] Microsoft的MSDN文档中仅公开了PEB的少数几个域,该结构“在未来的Windows版本中可能会修改”。[2]PEB包含的数据结构适用于整个进程,如全局上下文,启动参数,程序image装载器的数据结构,程序image的基地址,进程级互斥同步访问对象等。[1]

PEB与kernel mode EPROCESS数据结构密切相关。也是逐进程数据结构,在客户-服务器运行时子系统(CSRSS)进程地址空间被管理。但是,类似于CSRSS数据结构,PEB自身并不是内核模式数据结构。它驻留在所关联的进程的用户态内存空间中。这是因为它被设计为被操作系统的用户态的程序所使用,如NTDLL,在内核态之外执行,如程序映象的加载器与堆管理器。[3]

WinDbg中,卸载PEB内容的命令是!peb,命令参数是PEB在进程地址空间的地址,它实际上是通过!process命令获取,将显示来自于EPROCESS数据结构的信息,其中一个域是PEB地址。[3]

更多信息 域, 含义 ...

PEB的内容通过系统调用NtCreateUserProcess()初始化。该系统调用也是Native API的Win32函数 CreateProcess(), CreateProcessAsUser(), CreateProcessWithTokenW(), CreateProcessWithLogonW() (在kernel32.dll 与advapi32.dll中)的实现基础,也是Windows NT POSIX的posix.dll中的API函数Fork()的实现基础.[3]

对于Windows NT POSIX进程,新进程的PEB内容通过简单直接复制父进程的PEB来初始化。NtCreateUserProcess() 这是在fork()函数内部实现。对于Win32进程,新进程的PEB的初始化主要来自内核维护的全局变量。但几个域的初始化来自程序映象,特别是来自PE文件格式(PE+ 或 PE32+在64位)的IMAGE_OPTIONAL_HEADER32数据结构。[3]

更多信息 域, 初始化自... ...
Remove ads

参考文献

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads