WINDOWS下的各類HOOK

來源:互聯網
上載者:User

1、HOOK SERVICE TABLE:HOOK SSDT
這種方法對於攔截 NATIVE API 來說用的比較多。
SSDT hook,一句話——Windows把需要調用的核心API地址全都存在了
一個表中(System Service Dispatch Table),要想hook一個核心API,比較簡單的辦法就是把
該核心API在表(SSDT)中儲存的地址修改為自己撰寫的函數地址。

2、HOOK INT 2E 方法:IDT HOOK
IDT是中斷描述表,可以替換其中的中斷處理常式。
這種方法對於跟蹤、分析系統調用來說用的比較多。原理是通過替換 IDT
表中的 INT 2E 中斷,使之指向我們自己的中斷服務處理常式來實現的。掌握
此方法需要你對保護模式有一定的基礎。

3、 HOOK PE 方法:EAT HOOK
這種方法對於攔截、分析其他核心驅動的函數調用來說用的比較多。原理
是根據替換 PE 格式匯出表中的相應函數來實現的。
EAT是可執行檔的匯出表,記錄DLL中可供其他程式使用的函數,可執行檔裝載時會使用相應DLL的EAT表來初始化IAT表,通過替換EAT表中的函數地址,就可以使依賴於本DLL的程式得到一個假的地址。

4.IAT HOOK (ring3 用)
IAT是可執行檔的匯入表,記錄可執行檔使用的其它DLL中的函數,通過替換IAT表中的函數地址,可以hook相應DLL中的函數調用。

5、Inline Hook方法 (ring 0和ring3 都可以用)
Inline hook的工作流程:
1)驗證核心API的版本(特徵碼匹配)。
2)撰寫自己的函數,要完成以上三項任務。
2)擷取自己函數的地址,覆蓋核心API記憶體,供跳轉。
Inline Hook的缺點:
1) 不夠通用。各個windows版本中,核心API的開始一段不盡相同,要想通吃,就要多寫幾個版
本或者做一個特徵碼搜尋(因為有的核心API在各個版本中非常相似,只是在“特徵碼”之前或之後加一點東西)。
2) 已被一些偵查工具列入檢測範圍,如果直接從核心API第一個位元組開始覆蓋,那麼很容易被檢測,如果把覆蓋範圍往後推,並加以變形,也許能抵擋一氣。具體情況,我才疏學淺,尚未實驗

6.SYSENTRY hook
為了效能的考慮,xp後的系統都改用sysentry命令來進入ring0,去調用SSDT中的服務,不再是通過IDT中的 int 2E。這也使得我們hook也變得相對容易了。
首先獲得sysentry的地址,然後改之,不用再考慮IDT了

7)IRP hook
IRP是 I/O request packets,驅動程式中有一系列分發常式來處理請求,這些常式儲存在驅動裝置對象的資料結構中的一個表中,也很容易替換。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.