全局句柄表

 Windows內核分析索引目錄:https://www.cnblogs.com/onetrainee/p/11675224.htmlhtml

全局句柄表spa

  在這前有一篇中咱們介紹過私有句柄表操作系統

  對於私有句柄表,每一個進程有一份。htm

  全局句柄表,就一份,其全部句柄都存儲在這張表中,由操做系統維護。blog

  全局句柄表有一個好處,不管私有句柄表中再怎麼隱藏,全局句柄表必須有一份,不然會形成程序的不穩定。索引

 

1、全局句柄表與私有句柄表的不一樣進程

1. 搜索位置get

  私有句柄表地址是在該進程的 _KPROCESS+0xc4 _HANDLE_TABLE 中(TableCode)的位置。
變量

  全局句柄表地址是以 PspCidTable 這個全局變量中存儲,咱們只須要搜索這個全局變量便可。
搜索

    索引直接使用進程的PID便可。(PID也即句柄值)

2. 句柄結構體

  私有句柄的句柄結構爲 _OBJECT_HEADER+BODY。

  全局句柄表只包含 BODY,所以找到地址不用再加上偏移+0x18。

 

2、實驗:經過全局句柄表找到 計算器 的_EPROCESS

1. 打開計算器,打開任務管理器,找到計算器的PID 2036(0x7F4)

  

2. 使用Windbg, kd > dd PspCidTable 指令獲取全局句柄表  _HANDLE_TABLE 的值

  kd> dd PspCidTable
    80562460  e1000898 00000002 00000000 00000000
3. 解析出其 TableCode 地址,發現其爲一級地址

  kd> dt _HANDLE_TABLE e1000898
  ntdll!_HANDLE_TABLE
     +0x000 TableCode        : 0xe1003000
4. 計算其偏移地址 dt _EPROCESS
0xe1003000+0x7f4/4*8,查看 0x174 位置的內容。

  kd> dt _EPROCESS 816a2180

    ntdll!_EPROCESS

    +0x174 ImageFileName    : [16]  "calc.exe"

5. 結果正是咱們所須要的。

相關文章
相關標籤/搜索