首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

XP 使用者模式記憶體空間剖析(九):環境區塊與執行緒資訊區

     編輯:關於C++

殘留記憶體區塊概覽

移除映像檔、堆疊、堆積、映射檔案後,低位址與高位址邊界仍保留數個小區塊:

  • 0x00010000:環境區塊
  • 0x7FFDE000、0x7FFDF000、0x7FFE0000:執行緒資訊區(NT_TIB)
  • 0x7FFE0000:用途不明(標記備查)

環境區塊

位於 0x00010000,儲存 Unicode 格式的環境變數字串。包含系統與使用者環境變數(如 PATH、ALLUSERSPROFILE、APPDATA 等)。動態新增使用者環境變數後,重新執行程式即可在該區塊觀察到新增內容。

NT_TIB (Thread Information Block)

每個執行緒擁有一個 NT_TIB,透過 FS 段暫存器指向。本程式有三個執行緒,對應三個區塊:

  • 主執行緒:0x7FFDF000
  • 執行緒 2:0x7FFDE000
  • 執行緒 3:0x7FFDD000(文中未列出原始資料,推測位於更低位址)

結構欄位包含:ExceptionList、StackBase、StackLimit、SubSystemTib、FiberData、Version、ArbitraryUserPointer。StackBase 與 StackLimit 定義執行緒堆疊範圍。

觀察結構

推測每建立一個執行緒,NT_TIB 區塊向下增長一頁(4KB)。

未識別區塊

0x7FFE0000(大小 1 頁,唯讀)用途不明,做記號備查。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved