我正在尝试使用微过滤器阻止对文件(C:\pass\secret.txt)的访问。
当我尝试删除这个文件时,我得到了“访问被拒绝的Msgbox”的预期。但我仍然可以在命令提示符下使用"del“命令删除该文件。
命令提示符与powershell、explorer或我尝试过的任何其他程序有什么不同?
我在minifilter-driver-not-blocking-file-edition上看到了这篇文章,但正如我所说的,其他的一切都被屏蔽了。
FltPreOperationCallback函数:
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;
}https://stackoverflow.com/questions/51271308
复制相似问题