首页
社区
课程
招聘
[求助]minifilter过滤驱动引起页错误 毫无头绪
发表于: 2021-7-19 22:57 4301

[求助]minifilter过滤驱动引起页错误 毫无头绪

2021-7-19 22:57
4301

用minifilter写了个文件重定向的程序,但在运行时却出现了页错误。下图为详细信息。毫无头绪,因此来求助各位大佬。

正常函数调用应该是到0x***1000,但蓝屏的时候看栈,调用的地址是0x***0xxx(要往前一点)

FLT_PREOP_CALLBACK_STATUS
LocalBoost2PreOperation (
    _Inout_ PFLT_CALLBACK_DATA Data,
    _In_ PCFLT_RELATED_OBJECTS FltObjects,
    _Flt_CompletionContext_Outptr_ PVOID *CompletionContext
    )
{
    if (length != 0)
    {
        NTSTATUS status;
        UNREFERENCED_PARAMETER(FltObjects);
        UNREFERENCED_PARAMETER(CompletionContext);
        PT_DBG_PRINT(PTDBG_TRACE_ROUTINES,
            ("LocalBoost2!LocalBoost2PreOperation: Entered\n"));
        __try
        {
            PFLT_FILE_NAME_INFORMATION fileNameInfos;
            status = FltGetFileNameInformation(Data, FLT_FILE_NAME_NORMALIZED, &fileNameInfos);
            for (size_t i = 0; i < length; i++)
            {
                if (RtlEqualUnicodeString(&(source[i]), &(fileNameInfos->Name), FALSE))
                {
                    Data->Iopb->TargetFileObject->FileName.Buffer = goal[i].Buffer;
                    Data->Iopb->TargetFileObject->FileName.Length = goal[i].Length;
                    Data->Iopb->TargetFileObject->FileName.MaximumLength = goal[i].MaximumLength;
                    Data->IoStatus.Information = IO_REPARSE;
                    Data->IoStatus.Status = STATUS_REPARSE;
                    Data->Iopb->TargetFileObject->RelatedFileObject = NULL;
                    FltSetCallbackDataDirty(Data);
                    return FLT_PREOP_COMPLETE;
                }
            }
            FltReleaseFileNameInformation(fileNameInfos);
        }
        __except (EXCEPTION_EXECUTE_HANDLER)
        {
            return FLT_PREOP_SUCCESS_NO_CALLBACK;
        }
    }
    return FLT_PREOP_SUCCESS_WITH_CALLBACK;
}

上面是被跳转到的函数,有两个字符串数组souce和goal,存需要重定向的文件路径,length存这两个数组的长度。


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2021-7-20 20:32 被Billraozihan编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//