gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 02:37:32 24 4
gpt4 key购买 nike

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

当我尝试删除此文件时,我按预期收到“访问被拒绝消息框”。但我仍然可以在命令提示符下使用“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;
}

最佳答案

确保检查创建路径中是否设置了 FILE_DELETE_ON_CLOSE 标志。

关于c - Minifilter 驱动程序 - CMD 仍然可以删除文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51271308/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com