《windows內核情景分析》句柄和句柄表

    每個進程都有個句柄表,在EPROCESS結構的0xc4偏移處的ObjectTable,類型爲_HANDLE_TABLE,用來指向本進程的句柄表

  第一項TableCode是個指針數組,對應爲HANDLE_TABLE_ENTRY數據結構,每個有效的句柄都對應着(某個)句柄表中的一個表項

    表項的第一項Object指向某個對象的頭部,而該表項在句柄表中的位置則取決於句柄的值。

    在Windows內核中句柄表是個三維稀疏數組。HANDLE_TABLE_ENTRY大小爲8個字節,由2個32bit組成。如果第一個32bit值不爲0,那麼第一個32bit就可以轉換成一個指向對象頭的指針。HANDLE_TABLE_ENTRY第一個32bit的最高位用作標誌。當把一個HANDLE_TABLE_ENTRY第一個32bit轉換成對象頭的指針時,需要把低3bit設爲0,最高位設爲1。

    每當創建或者打開了一個對象,要爲之創建句柄並將其插入句柄表的時候,就爲其準備一個臨時的HANDLE_TABLE_ENTRY數據結構,使其

指向這個對象的頭部,然後通過ExCreateHandle()將其安裝到句柄表中

    ObpKernelHandleTable是ntdll中的一個全局變量,指向系統初始進程SYSTEM的句柄表

   PsInitialSystemProcess是一個全局變量,類型爲EPROCESS,爲系統初始進程SYSTEM

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章