2

我正在制作一个虚拟文件系统库,我想将它添加到任何 .exe 文件中以完成此操作,我需要挂钩所有 Windows 文件功能。

我知道有很多这些功能,但它们是高级 API,是否有这些使用的低级函数的完整列表?

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

我需要的是尽可能少的函数集来挂钩以覆盖整个文件系统处理。从 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
4

1 回答 1

1

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

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

所有这些功能都可以很容易地从用户模式挂钩。

于 2013-08-10T11:21:58.190 回答