【发布时间】:2010-07-24 21:56:57
【问题描述】:
我可以挂钩 Windows 7 中的哪些用户模式函数来监视/拦截文件访问?
我尝试过 ntdll.dll 的 NtOpenFile()、NtCreateFile(),但其中一些不是文件 - 它们也是管道和互斥体。 kernel32.dll 的CreateFile() 也是如此。是否有一个仅用于访问文件/目录的函数。如果它有帮助,我试图只挂钩 explorer.exe 以防止访问 firefox.exe。我也在使用 EasyHook,如果你们中有人熟悉的话。
我想我也在某处读到,使用 NtOpenFile/NtCreateFile 中的参数,您可以区分文件访问/管道访问。但这仍然有点朦胧。有没有什么好舒服的钩子函数?
编辑:请记住,我确实需要拦截文件访问以防止访问某些文件。 EasyHook 是一个很好的解决方案,因为它允许我在 C# 托管代码中通过几个简单的步骤执行复杂的挂钩。
【问题讨论】:
-
为什么不能只更改要拒绝访问的文件的权限?
-
没有那么优雅。我想要编码钩子带来的挑战和经验。
-
在这种情况下,编写非托管代码并自己进行挂钩。使用库进行挂钩没有任何挑战或经验。