0

I want to extract the contents before file write.

For example, when I open "C:\test\test.txt" and I perform write operating 'aaa'.

enter image description here

When I Save the file, IRP MJ WRITE packet will be transmitted User to Kernel.

So, I made minifilter and interrupt IRP packet before the write operation is accessed.

Now I want to get "aaa" string on kernel level minifilter.

I can get the file name "test.txt".But I can't get the contents of buffer "aaa".

This is my PFLT_PRE_OPERATION_CALLBACK callback function on IRP MJ WRITE.

`

FLT_PREOP_CALLBACK_STATUS 
MinifltWritePreRoutine(
    _Inout_ PFLT_CALLBACK_DATA data,
    _In_    PCFLT_RELATED_OBJECTS flt_object,
    _Out_   PVOID* completion_context
) 
{
    UNREFERENCED_PARAMETER(flt_object);
    UNREFERENCED_PARAMETER(completion_context);

    NTSTATUS status = STATUS_SUCCESS;
    PFLT_FILE_NAME_INFORMATION name_info = NULL;
    UNICODE_STRING test_pdf_pattern, file_path;

    status = FltGetFileNameInformation(data,
        FLT_FILE_NAME_NORMALIZED
        | FLT_FILE_NAME_QUERY_DEFAULT,
        &name_info);

    if (!NT_SUCCESS(status)) {
        return FLT_PREOP_SUCCESS_NO_CALLBACK;
    }

    status = FltParseFileNameInformation(name_info);
    if (!NT_SUCCESS(status)) {
        FltReleaseFileNameInformation(name_info);
        return FLT_PREOP_SUCCESS_NO_CALLBACK;
    }

    // check that file name has .txt string
    RtlInitUnicodeString(&test_pdf_pattern, L"*.TXT");
    RtlInitUnicodeString(&file_path, name_info->Name.Buffer);
    if (!FsRtlIsNameInExpression(&test_pdf_pattern, &file_path, TRUE, NULL)) {
        goto EXIT_OF_CREATE_POST_OPERATION;
    }

    // print the file name on dbgview
    KdPrint(("===== Write for [%wZ] =====\n\n", &name_info->FinalComponent));


    FltReleaseFileNameInformation(name_info);

    return FLT_PREOP_SUCCESS_WITH_CALLBACK;


EXIT_OF_CREATE_POST_OPERATION:

    if (name_info) {
        FltReleaseFileNameInformation(name_info);
    }

    return FLT_POSTOP_FINISHED_PROCESSING;
}

`

I can see "test.txt" on dbgview. But I want to see "aaa" on dbgview.

Please help me. . .

cheon
  • 1

0 Answers0