我打算让MiniFilter做一些文件加密,在文件上添加一些元数据。
我想我理解我需要做什么,在我的MiniFilter中,使文件以加密形式存储,但系统可以毫无问题地读取。
如果某个应用程序询问对该文件的读取,我需要查询加密的部分dechiper并将其发送回系统。
如果我尝试复制文件,我需要使用元数据和加密的有效负载复制整个文件。
但我想我的元数据可能有问题:因为我无法找到一种方法来了解我所获得的IRP_MJ_READ是来自试图阅读文件的应用程序还是复制粘贴请求,我将永远无法阅读元数据并复制它们。
在IRP_MJ_READ或IRP_MJ_CREATE中是否有一些特定于复制粘贴操作的信息?
答案 0 :(得分:1)
无论如何,你的任务都不容易或微不足道。在Windows中制作加密文件系统过滤器很难。
从那里开始探索。仅修改此应该非常简单。 确保您将使用VM和快照,并尝试仅监视特定文件并仅加密/解密该文件,因为在您成功之前需要多次尝试。
在IRP_MJ_READ或IRP_MJ_CREATE中是否有一些信息, 具体来自复制粘贴操作?
无论如何。内核对此视而不见。如果您考虑它,即使是在一天结束时复制/粘贴本身也会导致 explorer.exe 打开文件,从源文件读取,并使用系统调用写入目标文件。操作系统用于确保系统调用工作并完成其工作,它不知道也不需要知道数据或元数据的读取来自您复制/粘贴,右键单击 explorer.exe上的属性或者谁知道,你可以使用 Total Commander 并从那里复制粘贴,这个可以实现完全不同的副本或使用 xcopy 或 robocopy 即可。你需要在内核中以更抽象的方式思考。
祝你好运。