首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Minifilter驱动程序- CMD仍然可以删除文件

Minifilter驱动程序- CMD仍然可以删除文件
EN

Stack Overflow用户
提问于 2018-07-11 01:43:07
回答 0查看 275关注 0票数 3

我正在尝试使用微过滤器阻止对文件(C:\pass\secret.txt)的访问。

当我尝试删除这个文件时,我得到了“访问被拒绝的Msgbox”的预期。但我仍然可以在命令提示符下使用"del“命令删除该文件。

命令提示符与powershell、explorer或我尝试过的任何其他程序有什么不同?

我在minifilter-driver-not-blocking-file-edition上看到了这篇文章,但正如我所说的,其他的一切都被屏蔽了。

FltPreOperationCallback函数:

代码语言:javascript
复制
FLT_PREOP_CALLBACK_STATUS PtPreOperationPassThrough(_Inout_ PFLT_CALLBACK_DATA Data, _In_ PCFLT_RELATED_OBJECTS FltObjects, _Flt_CompletionContext_Outptr_ PVOID *CompletionContext) {  

NTSTATUS status;

UNREFERENCED_PARAMETER( FltObjects );
UNREFERENCED_PARAMETER( CompletionContext );

if (PtDoRequestOperationStatus(Data)) {
    status = FltRequestOperationStatusCallback(Data, PtOperationStatusCallback, (PVOID)(++OperationStatusCtx));
    if (!NT_SUCCESS(status)) {
        PT_DBG_PRINT(PTDBG_TRACE_OPERATION_STATUS, ("PassThrough!PtPreOperationPassThrough: FltRequestOperationStatusCallback Failed, status=%08x\n", status));
    }
}

if (Data->Iopb->MajorFunction == IRP_MJ_WRITE || Data->Iopb->MajorFunction == IRP_MJ_SET_INFORMATION || Data->Iopb->MajorFunction == IRP_MJ_CREATE) {
    UNICODE_STRING ourFile;
    RtlInitUnicodeString(&ourFile, L"\\pass\\secret.txt");

    if (RtlCompareUnicodeString(&Data->Iopb->TargetFileObject->FileName, &ourFile, FALSE) == 0) {
        DbgPrintEx(DPFLTR_IHVDRIVER_ID, DPFLTR_INFO_LEVEL, "PtPreOperationPassThrough: %wZ\n", &Data->Iopb->TargetFileObject->FileName);
        Data->IoStatus.Status = STATUS_ACCESS_DENIED;
        Data->IoStatus.Information = 0;
        return FLT_PREOP_COMPLETE;
    }
}

return FLT_PREOP_SUCCESS_WITH_CALLBACK;
}
EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51271308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档