勵志

勵志人生知識庫

句柄表

句柄表 作業系統中 用於管理 核心 對象的 一個重要 數 據 結 構。 當 一個 進程被初始化 時,系 統 會 為它分配 一個句柄表, 這 個句柄表只 用於 核心 對象,不 用於用 戶 對象或GDI 對象。句柄表的 詳 細 結 構和管理方法 並 沒有具 體的 資料 說明,它只是 一個 數 據 結 構的 數 組。每 個 結 構都包含 一個指向 核心 對象的指 針, 一個 訪 問 禁止和一些 標誌。

句柄表分 為私有句柄表和全局句柄表。每 一個 進程都有自己的私有句柄表, 當 一個 進程中使用OpenProcess打 開另 一個 進程 時, 會被打 開 進程在 核心 對象的_EPROCESS 結 構 體完整的映射到打 開 進程的私有句柄表中。

句柄表的 結 構分 為多 級,一般 為一 級 結 構, 當句柄值太大 時 則 會展 開多 級 結 構,以 後三位 為準。 一個句柄值占8 個 位元組,一 頁4KB,故一 頁能存 儲512 個句柄值。如果 採用多 級 結 構(以 兩 級 為例),第一 級就 會存 儲第二 級的地址。存 儲地址 則能存 儲1024 個地址, 這 樣算下 來 採用 兩 級 結 構可以存 儲512*1024 個值。

在句柄表中 一個句柄值占 8位元組,故我 們 採用dq 來查看。