FileInformation Buffer для копирования структуры - PullRequest
0 голосов
/ 08 июля 2019

Я пытаюсь скопировать буфер FileInformation из перехваченного вызова API ZwQueryInformationFile в структуру File_Rename_Information.

Я использую приведенный ниже код, но структура заполняется случайными символами;

typedef struct _FILE_RENAME_INFORMATION {
    BOOLEAN                 ReplaceIfExists;
    HANDLE                  RootDirectory;
    ULONG                   FileNameLength;
    WCHAR                   FileName[1];
} FILE_RENAME_INFORMATION, *PFILE_RENAME_INFORMATION;
///////////////////////////////////////////////////
// Hook Catcher = ZwQueryInformationFile_Hook
///////////////////////////////////////////////////
NTSTATUS __stdcall ZwQueryInformationFile_Hook(
                                      IN HANDLE FileHandle,
                                      OUT PIO_STATUS_BLOCK IoStatusBlock,
                                      OUT PVOID FileInformation,
                                      IN ULONG Length,
                                      IN FILE_INFORMATION_CLASS FileInformationClass)
{
    if (FileInformationClass == FileRenameInfo) {
        FILE_RENAME_INFORMATION*pFRI = (FILE_RENAME_INFORMATION*)malloc(Length);
        memcpy(pFRI, FileInformation, Length);
    }
    return ZwQueryInformationFile(FileHandle, IoStatusBlock, FileInformation,
                                  Length, FileInformationClass);
}

Результат для pFRI->FileName выглядит следующим образом;

쳌쳌쳌쳌쳌쳌쳌쳌Ї眬

Моя конечная цель - получить и проверить имя файла source (Я считаю, что эта информация содержится в ZwQueryInformationFile), а затем измените имя файла destination (я считаю, что эта информация содержится в ZwSetInformationFile) соответственно.

Как правильно перехватить этот тип операции переименования файла?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...