我記得我最後一年的大學項目中,我寫了一個C#註冊表監控,然而,當我與微軟的ProcessMonitor應用程序相比,它(我不記得它的確切名字,但被MSoft收購的公司),我不是捕捉儘可能多註冊表調用。註冊表監控,包括內核模式註冊表訪問?
了這是因爲我使用的是C#的包裝,因此,它只會被捕捉用戶模式註冊表訪問?
我用這個包裝:http://www.codeproject.com/KB/DLL/EasyHook64.aspx
趕上內核模式註冊表訪問我將不得不在C++寫?
我記得我最後一年的大學項目中,我寫了一個C#註冊表監控,然而,當我與微軟的ProcessMonitor應用程序相比,它(我不記得它的確切名字,但被MSoft收購的公司),我不是捕捉儘可能多註冊表調用。註冊表監控,包括內核模式註冊表訪問?
了這是因爲我使用的是C#的包裝,因此,它只會被捕捉用戶模式註冊表訪問?
我用這個包裝:http://www.codeproject.com/KB/DLL/EasyHook64.aspx
趕上內核模式註冊表訪問我將不得不在C++寫?
Process Monitor要麼使用內核驅動程序或ETW(見下文)來捕獲註冊表事件。我知道Process Monitor使用ETW來處理它的一些數據(比如網絡信息)。
像EasyHook這樣的API掛鉤或繞行機制通常在Win32 API級別運行(例如,ADVAPI32.dll中的RegSetValue
或RegCreateKeyEx
)。因此,它具有您提到的限制:僅捕獲用戶模式註冊表訪問。另外,API掛鉤通常是在每個進程的基礎上完成的,因此您必須將自己注入到您想要收集數據的每個進程中。如果您想真正捕獲整個系統的所有訪問,您還必須監視流程創建。
Event Tracing for Windows(ETW)是一種簡單的方法(相對而言)來捕獲所有註冊表訪問。 ETW背後的基本思想是,操作系統,運行時,庫,甚至日常應用程序開發人員都可以在代碼中添加特定的工具,以記錄關於有趣的事件和場景的數據。這種追蹤開銷很低,可以很容易地收集。 ETW已經有一段時間了,但從Vista開始,它在整個內核中的確引起了很大的關注。幾乎所有主要的內核子系統現在都裝有ETW。它現在也是Windows事件日誌的基礎。
ETW有行李的公平份額,並且缺乏在一些地區大量的文檔,但是如果你有興趣,你可以檢查出以下幾點:
趕上內核模式註冊表 訪問我將不得不在C++寫?
不,使用上面提到的TraceEvent庫,可以使用C#捕獲和分析整個系統的內核和用戶模式註冊表訪問。
要捕捉你必須C++編寫驅動程序內核模式註冊表訪問,沒有任何其他的方式來做到這一點。 進程監視器是一個驅動程序,這就是爲什麼它可以捕獲用戶和內核訪問。
您可以下載Regmon中和這裏的Filemon舊版本:
您是來自已經被替換進程監視器http://technet.microsoft Sysinternals的思維RegMon的的。 com/en-us/sysinternals/bb896645 – 2011-01-28 22:43:01
進程監視器是我用過的,是的! – Tom 2011-01-28 22:46:22
這些SysInternals公用程序的早期版本沒有附帶源代碼,還是我在做夢? – 2011-01-29 00:20:32