热门问题
时间线
聊天
视角

進程環境塊

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

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