MiniFilter

时间:2018-01-03 09:23:22

标签: windows filesystems minifilter

我打算让MiniFilter做一些文件加密,在文件上添加一些元数据。

我想我理解我需要做什么,在我的MiniFilter中,使文件以加密形式存储,但系统可以毫无问题地读取。

如果某个应用程序询问对该文件的读取,我需要查询加密的部分dechiper并将其发送回系统。

如果我尝试复制文件,我需要使用元数据和加密的有效负载复制整个文件。

但我想我的元数据可能有问题:因为我无法找到一种方法来了解我所获得的IRP_MJ_READ是来自试图阅读文件的应用程序还是复制粘贴请求,我将永远无法阅读元数据并复制它们。

在IRP_MJ_READ或IRP_MJ_CREATE中是否有一些特定于复制粘贴操作的信息?

1 个答案:

答案 0 :(得分:1)

无论如何,你的任务都不容易或微不足道。在Windows中制作加密文件系统过滤器很难。

  1. 首先,我会给你一些提示和指示。你可以做的最好的事情是解析OSR NTFSD列表的帖子和线程。对于这些过滤器来说,它是一个金矿。
  2. 查看Microsoft的swapbuffers示例。它们展示了如何用您自己的读/写I / O路径替换数据。在这种情况下,正如您所描述的那样,您可以在Read上加密,并在Read
  3. 上解密
  4. 对于初学者,仅过滤设置了IRP_NO_CACHE标志的读/写。确保所有读/写都是体积扇区大小的倍数。查看有关此标记here
  5. 的更多信息
  6. 使用与卷扇区大小一致的分组密码,所有流行密码都应该。请参阅CNG
  7. 从那里开始探索。仅修改此应该非常简单。 确保您将使用VM和快照,并尝试仅监视特定文件并仅加密/解密该文件,因为在您成功之前需要多次尝试。

      

    在IRP_MJ_READ或IRP_MJ_CREATE中是否有一些信息,   具体来自复制粘贴操作?

    无论如何。内核对此视而不见。如果您考虑它,即使是在一天结束时复制/粘贴本身也会导致 explorer.exe 打开文件,从源文件读取,并使用系统调用写入目标文件。操作系统用于确保系统调用工作并完成其工作,它不知道也不需要知道数据或元数据的读取来自您复制/粘贴,右键单击 explorer.exe上的属性或者谁知道,你可以使用 Total Commander 并从那里复制粘贴,这个可以实现完全不同的副本或使用 xcopy robocopy 即可。你需要在内核中以更抽象的方式思考。

    祝你好运。