2010-07-24 23 views
2

Windows 7中的哪些用戶模式功能可以監視/ 攔截文件訪問掛鉤哪個用戶模式函數來監視/攔截文件訪問?

我試過ntdll.dll的NtOpenFile(),NtCreateFile(),但其中一些不是文件 - 它們也是管道和互斥體。 kernel32.dll的CreateFile()也一樣。是否有一個函數僅用於訪問文件/目錄?如果有幫助,我試圖只hook explorer.exe以防止訪問firefox.exe。我也使用EasyHook,如果你們中的任何一個熟悉它的話。

我想我也讀過一些地方,使用NtOpenFile/NtCreateFile的參數,你可以區分文件訪問/管道訪問。但是,這仍然有點朦朧。有沒有一個很好的舒適的函數來鉤?

編輯:請記住我需要攔截文件訪問以防止訪問某些文件。 EasyHook是一個很好的解決方案,因爲它允許我在C#託管代碼中執行一些簡單的步驟來執行復雜的鉤子。

+0

爲什麼你不能改變你想拒絕訪問的文件的權限? – 2010-07-24 23:46:32

+0

不如優雅。我希望編碼鉤子帶來的挑戰和經驗。 – Rudi 2010-07-25 19:15:08

+0

在這種情況下,編寫非託管代碼並自己進行掛接。使用圖書館進行掛鉤沒有任何挑戰或經驗。 – 2010-07-25 19:32:47

回答

3

沒有隻打開文件的「文件打開功能」。此外,僅使用Detours支持掛鉤。最後,您必須確保所有運行此操作系統的計算機都安裝了.NET 4.0,以便它們可以運行SxS中的進程。

一個更優越的解決方案是更改firefox.exe上的文件權限。這是一個不需要許可Detours的解決方案,並且受到支持。

+0

也許更改文件權限可能會起作用,但它絕對沒有優雅,我喜歡挑戰。鉤住什麼意思只有Detours支持? Detours停止使用; EasyHook是一個優秀的圖書館。 – Rudi 2010-07-25 00:26:05

+0

你是什麼意思Detours停止了? [它仍然列在微軟的IP許可頁面上。](http://www.microsoft.com/about/legal/en/us/IntellectualProperty/IPLicensing/Programs/Detours.aspx)。大多數主要的操作系統升級包括更多的防止掛鉤程序(通常是間諜軟件或病毒)的保護。出於安全原因,Microsoft將毫不猶豫地打破基於EasyHook的程序,但他們支持Detours。 – 2010-07-25 01:05:24

+0

文件權限是解決問題的最優雅的解決方案。想想看:你想限制對特定文件的訪問。嗯...文件權限是最優雅的解決方案。鉤住(特別是x64上的內核代碼)肯定是一個挑戰,但是「挑戰」是編寫可怕代碼的可怕藉口。 – 2010-07-25 01:07:36