【问题标题】:Which user-mode functions to hook to monitor/intercept file access?哪些用户模式函数可以用来监视/拦截文件访问?
【发布时间】:2010-07-24 21:56:57
【问题描述】:

我可以挂钩 Windows 7 中的哪些用户模式函数来监视/拦截文件访问

我尝试过 ntdll.dll 的 NtOpenFile()NtCreateFile(),但其中一些不是文件 - 它们也是管道和互斥体。 kernel32.dll 的CreateFile() 也是如此。是否有一个仅用于访问文件/目录的函数。如果它有帮助,我试图只挂钩 explorer.exe 以防止访问 firefox.exe。我也在使用 EasyHook,如果你们中有人熟悉的话。

我想我也在某处读到,使用 NtOpenFile/NtCreateFile 中的参数,您可以区分文件访问/管道访问。但这仍然有点朦胧。有没有什么好舒服的钩子函数?

编辑:请记住,我确实需要拦截文件访问以防止访问某些文件。 EasyHook 是一个很好的解决方案,因为它允许我在 C# 托管代码中通过几个简单的步骤执行复杂的挂钩。

【问题讨论】:

  • 为什么不能只更改要拒绝访问的文件的权限?
  • 没有那么优雅。我想要编码钩子带来的挑战和经验。
  • 在这种情况下,编写非托管代码并自己进行挂钩。使用库进行挂钩没有任何挑战或经验。

标签: c# windows hook


【解决方案1】:

没有只打开文件的“文件打开功能”。此外,仅使用 Detours 支持挂钩。最后,您必须确保运行它的所有计算机都安装了 .NET 4.0,以便它们可以运行进程内 SxS。

一个更好的解决方案是更改 firefox.exe 上的文件权限。这是一个不需要 Detours 许可的解决方案,并且受支持。

【讨论】:

  • 也许更改文件权限会起作用,但它绝对没有那么优雅,我喜欢挑战。你说的钩子只有Detours支持是什么意思? Detours 已停止; EasyHook 是一个高级库。
  • Detours 停产是什么意思? It still listed on Microsoft's IP licensing page.。大多数主要的操作系统升级都包括对挂钩程序(通常是间谍软件或病毒)的更多保护。出于安全原因,Microsoft 会毫不犹豫地破坏基于 EasyHook 的程序,但它们支持 Detours。
  • 文件权限是解决这个问题的最优雅的方法。想一想:您希望限制对特定文件的访问。嗯...文件权限是最优雅的解决方案。挂钩肯定是一个挑战(尤其是 x64 上的内核代码),但“挑战”是编写糟糕代码的可怕借口。
  • 如果他们只是再次覆盖文件权限?我是否要定期轮询权限掩码并用所有拒绝再次覆盖它们?
  • 用户是否拥有计算机。如果用户拥有这台计算机,那么他们有权更改文件权限,任何程序都不应该立即采取行动。如果用户不拥有这台计算机,那么他们不应该在Administrators 组中,并且他们根本没有更改文件权限的权限。
猜你喜欢
  • 1970-01-01
  • 2014-01-21
  • 2011-03-23
  • 1970-01-01
  • 1970-01-01
  • 2019-06-17
  • 2021-10-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多