minifilter 与 API Hooking 用于文件系统操作监控\过滤

Oph*_*tan 1 winapi driver api-hook minifilter

我需要开发一个应用程序来监视并可能过滤(拒绝调用)文件操作。

看来开发微型过滤器是“标准”解决方案。另一种可能的方法是使用 API 挂钩。

这些是相关的解决方案吗?(我在某些地方读到 API 挂钩可能不合适 - 但没有给出解释)

还有其他选择吗?

Lor*_*ias 5

微软本质上不支持API挂钩(至少在内核空间)。在 x64(从 Vista 及更高版本开始)上,如果 patchguard 检测到 SSDT 挂钩或系统关键组件发生任何更改,它通常会杀死机器。API 挂钩很难在系统范围内实现,因为 Windows 使用的同步原语不会导出,因此即使您设法挂钩代码,也不能保证机器不会因 EIP 的值而崩溃在给定时刻(当您卸载已挂钩函数的驱动程序时,这尤其有效)。

也许您最好的选择是尝试直接挂钩内存内核对象,而不使用微过滤器驱动程序。您可能想查看每个对象窗口都有的 OBJECT_TYPE_INITIALIZER定义结构(文件、事件、端口等 - 谷歌周围查看它们)作为其成员。您对 *Procedure 函数指针特别感兴趣。