【发布时间】:2013-08-10 09:29:45
【问题描述】:
我正在制作一个我想添加到任何 .exe 的虚拟文件系统库 为此,我需要挂钩所有 Windows 文件功能。
我知道有很多这些函数,但它们是高级 API,是否有这些函数使用的低级函数的完整列表?
我的意思是 ZwOpenFile
我需要的是尽可能少的函数集来挂钩以覆盖整个文件系统处理。从 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
【问题讨论】:
-
写一个文件系统过滤驱动不是更好吗?
-
这与我想要做的完全相反..我想要一个文件中的 exe 及其资产(包括 dlls inis 等)(如果修改保存在硬盘上),我在这里安装驱动程序客户端机器;/
-
同意垫子。 EXE 将是完全错误的解决方案。所有程序都可以通过内核访问驱动程序,但 EXE 在特定用户帐户下运行,因此很难从其他帐户访问。
-
并且用户模式挂钩对内核模式下尝试打开文件的代码没有影响。正确的方法是编写文件系统重定向器。模拟网络驱动器可能会让您利用系统中已经存在的大量基础设施来完成这类事情。