FileInformation缓冲区到结构副本

时间:2019-07-08 10:18:50

标签: c++ winapi

我正在尝试从钩子API FileInformation调用中将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中),然后更改目的地文件名(我认为此信息相应地位于ZwSetInformationFile中。

拦截此类文件重命名操作的正确方法是什么?

0 个答案:

没有答案