防止在pre-create-callback / post-create-callback中覆盖文件

时间:2013-01-29 11:06:10

标签: windows driver minifilter

我编写了minifilter驱动程序,用于防止写入PE文件。我在post-create回调中检查文件内容。如果格式匹配,我会尝试拨打FltCancelFileOpen并返回STATUS_ACCESS_DENIED

但是可以通过使用CreateDisposition = FILE_OVERWRITE/FILE_OVERWRITE/FILE_SUPERSEDE打开文件来劫持此内容。在这种情况下,在调用post-create-callback时,文件已被截断。

如何克服这个问题?

2 个答案:

答案 0 :(得分:1)

更好的选项将检查预创建回调和拒绝文件打开,并对现有文件具有写访问权限。您可以通过从预创建中返回FLT_PREOP_COMPLETE并在CallbackData->IoStatus.Status中设置相应的错误来实现此目的。

答案 1 :(得分:0)

试试这个:

 FltCancelFileOpen( FltObjects->Instance, FltObjects->FileObject );
 Data->IoStatus.Status = STATUS_ACCESS_DENIED;
 Data->IoStatus.Information = 0;

并返回

FLT_POSTOP_FINISHED_PROCESSING;

在GitHub的microsoft扫描仪示例中的完整示例