文件系统挂钩

时间:2013-08-10 09:29:46

标签: c++ winapi hook

我正在创建一个我想要添加到任何.exes的虚拟文件系统库 为了实现这一点,我需要挂钩所有的Windows文件函数。

我知道有很多这些功能,但它们是高级API,有没有全面的低级功能列表?

我的意思是ZwOpenFile< - NtOpenFile< - OpenFile等(但只有用户模式)

我需要的是用于覆盖整个文件系统处理的最小可能的func集。从Windows API中反转它有点困难。

我已经涵盖了基础知识(文件现在只读取并且肯定没有完成)但我还需要文件写入/目录枚举。

奇怪的是,例如FindFirstFileA使用ZwOpenFile

ZwOpenFile hook. ObjectName : \??\D:\VFS\* Handle : 20
NtQueryDirectoryFileHook hook. Handle : 20
NtQueryDirectoryFileHook hook. Handle : 20
D:/VFS/Test
D:/VFS/test2.txt
D:/VFS/test3.txt
NtQueryDirectoryFileHook hook. Handle : 20
ZwOpenFile hook. ObjectName : \??\D:\VFS\Test\* Handle : 24
NtQueryDirectoryFileHook hook. Handle : 24
NtQueryDirectoryFileHook hook. Handle : 24
D:/VFS/Test/huh.txt
NtQueryDirectoryFileHook hook. Handle : 24
ZwOpenFile hook. ObjectName : \??\C:\Windows\system32\apphelp.dll Handle : 44

感兴趣的功能:

NtCreateFile
NtOpenFile
NtLockFile
NtUnlockFile
NtReadFile
NtWriteFile
NtClose

NtWriteFileGather
NtReadFileScatter

NtQueryDirectoryFile

NtQueryInformationFile
NtSetInformationFile

related


NtQueryVolumeInformationFile
MapViewOfFile
NtOpenSection
NtUnmapViewOfSection

NtFsControlFile
NtDeviceIoControlFile
NtNotifyChangeDirectoryFile

1 个答案:

答案 0 :(得分:1)

您需要ZwCreateFile来挂钩文件或创建;用于挂钩文件删除的ZwDeleteFile;如果你想控制文件锁定,你还需要ZwLockFile和ZwUnlockFile;挂钩ZwQueryInformationFile和ZwSetInformationFile将帮助您检测文件信息的变化。如果要控制从文件读取并写入文件,还需要挂钩ZwReadFile和ZwWriteFile;和ZwMapViewOfSection / ZwUnmapViewOfSection用于处理文件映射。

对于目录枚举,您需要挂钩ZwQueryDirectoryFile。

所有这些功能都可以轻松地与用户模式挂钩。