0

作为微过滤器课程的一部分,我构建了一个非常简单的微过滤器驱动程序。我还阅读了Microsoft 提供的 PDF 文档形式的微过滤器文档,以及此参考资料。这些指南解释了如何设置上下文和实例。但是,它们没有解释为什么要使用上下文和/或实例以及它们的用途。我非常小的过滤器驱动程序对上下文和实例都使用了 NULL 并且仍然可以运行,所以我想知道这些构造的用例。

4

1 回答 1

3

您想要为文件、卷等使用上下文的原因有很多。当然,过滤器甚至文件系统可以在没有它们的情况下运行,但性能会非常糟糕。

想象一下这样的场景:你是一个 AV (AntiVirus) 并且想要扫描一些文件以检查它们是否包含恶意代码。您注册了您的微过滤器和回调,现在您正在被调用,您需要在打开文件时对其做出决定。

涉及几个步骤:

  1. 您查询文件名和安全上下文
  2. 您阅读了文件内容
  3. 或者,使用 SHA256 对文件进行哈希处理,以查看它是否在您的 AV 数据库中匹配,例如
  4. 您检查文件是否经过数字签名,这也是您检查的一部分
  5. 解析文件的 PE 头(如果它有一个)以查看它是什么类型的文件或可执行文件,以帮助您做出决定
  6. 您根据上述所有信息对文件应用您的政策

现在让我们假设文件是​​干净的并且消失了。如果您无法掌握刚刚了解的有关该文件的信息,则下次打开该文件时,您将不得不从头再来。你的表现会很糟糕,你的操作系统会崩溃并慢慢烧毁。

这就是上下文派上用场的地方。

现在您已经获得了有关该文件的所有这些信息,您可以将所有这些信息存储在您的上下文中,然后与该文件相关联。下次您看到该文件时,您只需查询其上下文并获得所需的所有信息。

当然有些东西需要更新,例如,如果您注意到文件已更改,那么您将其标记为脏,并在下一次创建或清理回调时根据需要进行更新。

或者,您可以使用缓存,在文件永久关闭并且微过滤器想要释放与文件关联的上下文之后,您可以自己保存它。现在,下次打开文件时,您会查找文件的上下文(NTFS 支持文件的唯一文件 ID)并将其与您的文件相关联,并立即了解您需要了解的有关该文件的所有信息

这只是一种用法,但现在您可以自己思考更多有用的场景。

于 2018-01-26T20:19:19.653 回答