2010-05-18 50 views
1

好的,如果有人能解決這個問題,他們必須是一個天才,因爲它無處在網絡上!查找哪個進程訪問註冊表?

http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx

該程序檢測註冊表訪問,告訴你哪個過程做到了。

有誰知道我該怎麼做?我可以檢測到變化,但我不能得到這個過程。

在此先感謝

+2

僅供參考:系統內核人員在涉及Windows時就非常有天才。 – JohnFx 2010-05-18 23:46:52

回答

3

它通過掛鉤系統調用完成。它將呼叫掛接到RegOpenKey(etc),並在將呼叫傳遞到realRegOpenKey之前記錄訪問註冊表的過程的所有信息。

請參閱EasyHook的庫,使它相對相對易於在Windows中編寫API掛鉤。

但是,當我說「easy」時,我的意思是「這裏是怪物!」 API掛鉤並不適合心臟病發作,在嘗試之前,您應該對Windows內部有非常好的工作知識。

+0

啊謝謝!所以基本上,我會一旦檢測到變化就'搶'一把鑰匙,然後掛鉤它?或者,在檢測到更改之前,是否需要執行此掛鉤? 對不起,這是我所知道的。今天早些時候我已經習慣了PInvoke,並且我最終學習了關於鉤子的知識! 謝謝 ps我需要在我的項目中包含哪些easyhook文件? .h和.dll? – Tom 2010-05-19 00:18:04

+0

您掛鉤RegOpenKey函數(說),然後每當進程調用RegOpenKey,您的函數被調用,而不是真正的。然後記錄傳入的參數並交給* real * RegOpenKey來完成實際工作。正如我所說的,這不是因爲內心的淡淡,老實說,如果你今天才剛剛瞭解P/Invoke,那麼我認爲你不準備開始尋找API hooking ... Mark Russinovich( Process Monitor的作者)已經從事Windows編程工作了15年,是一位操作系統專家。 – 2010-05-19 00:41:53

0

如果您只是想了解正在做什麼,那麼您可以使用ProcessMonitor或Sysinternals中的其他派生工具之一,現在由Microsoft作爲Winternals運行。請參閱程序清單here

如果你想寫一個程序來做到這一點,你必須鉤住註冊表訪問功能。這個源代碼可以在Sysinternals工具的存檔中找到。它似乎不再適用於該程序。