日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2.全局句柄表

發(fā)布時間:2025/3/20 编程问答 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2.全局句柄表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
kd> dt _HANDLE_TABLE nt!_HANDLE_TABLE+0x000 TableCode : //指向句柄表的存儲結構+0x004 QuotaProcess : _EPROCESS//句柄表記錄的內存資源記錄在此進程中+0x008 UniqueProcessId : Void//創(chuàng)建進程的ID,用于回調函數+0x00c HandleTableLock : [4] _EX_PUSH_LOCK//句柄表鎖 (僅在句柄表拓展時使用)+0x01c HandleTableList : _LIST_ENTRY //所有句柄表形成一個鏈表,鏈表頭為全局變量HandleTableListHand+0x024 HandleContentionEvent : _EX_PUSH_LOCK//若在訪問句柄表時發(fā)生競爭,則在此推鎖上等待+0x028 DebugInfo : //調試信息,當調試句柄時才有意義+0x02c ExtraInfoPages : //審計信息所占用的頁面數量+0x030 FirstFree : //空閑鏈表表頭的句柄索引+0x034 LastFree : //最近被釋放的句柄索引,用于FIFO類型空閑鏈表+0x038 NextHandleNeedingPool : //下一次句柄表拓展的起始句柄索引+0x03c HandleCount : //正在使用的句柄表項的數量+0x040 Flags : //標志域+0x040 StrictFIFO : //是否使用FIFO風格的重用,既先釋放先重用
  • 所有的進程和線程無論無論是否打開,都在這個表中。
  • 每個進程和線程都有一個唯一的編號: PID和CID 這兩個值其實就是全局句柄表中的索引。
  • 進程和線程的查詢,主要是以下三個函數,按照給定的PID或CID從PspCidTable從查找相應的進線程對象:

    PsLookupProcessThreadByCid() PsLookupProcessByProcessld() PsLookupThreadByThreadld() ... 其實這些函數就是遍歷全局句柄表PspCidTable

    如果TableCode低2位為0,最多512個對象(超過就變表)

    TableCode低2位為1,第一級可以存1024個地址,第二級存儲的才是真正的句柄信息,最多存512 * 1024 (超過就變表)

    TableCode低2位為2,第一級地址,第二級也是地址,第三級才是句柄信息。最多存512 * 1024 * 1024

    觀察句柄表

    通過PID的值,在PspCidTable中找到內核對象

    我進程開的比較少TableCode低2位為0,只有一頁。

    1732對應的16進制就是6c4,6c4/4=1b1

    全局句柄表,和進程的句柄表不同它的后4位清0直接就該結構地址,其他不變

    總結

    以上是生活随笔為你收集整理的2.全局句柄表的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。