minifilter驱动程序|跟踪文件中的更改

时间:2017-11-07 14:06:02

标签: windows-kernel minifilter

我想要实现的是拦截对文件的每次写入并跟踪文件中的更改。我想跟踪写入前后文件内容的不同。

到目前为止,在我的minifilter驱动程序中,我注册了IRP_MJ_WRITE回调,现在可以拦截对文件的写入。但是我仍然不确定如何在[preoperation]之前和[postoperation]之后的内容中获取文件的内容。 我在回调函数中的参数是: PCFLT_RELATED_OBJECTS,PFLT_CALLBACK_DATA和我在这些内容中找不到与文件内容相关的任何内容。

1 个答案:

答案 0 :(得分:1)

这些操作可能会更改文件中的数据:

  1. 修改文件: IRP_MJ_WRITE IRP_MJ_SET_INFORMATION (特别是 FileEndOfFileInformation FileValidDataLengthInformation 信息类), IRP_MJ_FILE_SYSTEM_CONTROL (特别是 FSCTL_OFFLOAD_WRITE FSCTL_WRITE_RAW_ENCRYPTED FSCTL_SET_ZERO_DATA fsctl代码)。
  2. 至于你自己需要阅读的文件本身的内容。 例如,如果您指的是缓冲区,请检查this以查找有关回调数据中 IRP_MJ_WRITE 参数的更多信息。基本上缓冲区位于 Data-> Iopb-> Parameters.Write.WriteBuffer / MdlAddress

    确保正确处理该内存,否则会导致BSOD。

    祝你好运。