2011-04-13 94 views
3

我目前正在使用.NET/Python中的一個工具來監視系統上的某些事件,如編寫特定的註冊表項或使用特殊名稱創建文件。跟蹤窗口API調用

我評估了很多可能性,因爲我不必關心WinXP支持,所以我使用Windows的事件跟蹤來獲取所有文件和註冊表活動的實時流,並且這可以正常工作(通過消耗來自NT內核記錄器的事件)。

現在,我不得不擴展我的工具來監視一些Windows API函數的所有調用,如WriteProcessMemoryNtUnmapViewOfSectionVirtualAllocEx。我發現了許多工具,可以讓我跟蹤一個進程中的所有API調用,但是連接所有進程並不是一個好主意,是嗎?

現在我想知道是否有可能爲此使用ETW。有沒有提供內核提供API調用的供應商?如果不是,我還能做什麼?

摘要:如果我想捕獲API調用,是否必須鉤住每一個進程?

回答

2

一般來說,有兩種截取系統API調用的方法;無論是用戶模式還是內核模式攔截。對於用戶模式API攔截,您必須鉤住每個進程,以準確地捕獲/重定向每個呼叫到您想要的API函數。內核模式攔截避開了鉤住每個進程的需要,但也需要先進的低級知識(以及交叉簽名代碼簽名證書以在內核模式下運行您的代碼)。

有很多庫可以提供API掛接功能,但我相信我所知道的所有工作都主要以用戶模式工作,即需要將系統範圍的DLL注入進程。

+0

是否有任何公開用戶級API的內核模式驅動程序? – leoluk 2011-04-13 18:44:51

+0

我知道MadCodeHook和EasyHook都包含一個內核模式驅動程序並提供一個用戶級API。其中任何一個都可能會滿足您的需求。 – 2011-04-14 03:13:44

+0

我使用EasyHook工作,這正是我正在尋找的。謝謝。 – leoluk 2011-04-16 11:00:20