2016-04-05 57 views
-1

我刚开始学习C++编程和练习,我想学习如何编写Windows API Syscall挂钩。例如,如果我将尝试删除具有特定名称的文件,例如'test.txt',则不会删除它,而是会弹出一条消息。我试图寻找一个关于如何做这样的事情的教程,但我找不到任何东西。C++ Windows API Syscall挂钩示例

也许有人可以分享一个链接指导如何做这样的事情,或者可能是一个非常简单的代码示例?

我工作的Windows 10机器和Visual Studio 2015年

+0

这更具有与Windows API和自身相关的比C++库窗口做。您可能需要了解弹出窗口的winforms。 – shinzou

+0

据我所知,与Linux不同,Windows不支持它作为其API的一部分;针对Windows API非常特定的子集有一些针对性的方法(例如创建自定义驱动程序来拦截文件IO),以及一些在thunk级别工作且需要x86/x64汇编程序知识的低级方法。出于好奇,为什么你认为这可以在一个简单的代码示例中完成? –

+2

这是可能的,但非常困难。对初学者来说这不是一个合适的项目。 –

回答

1

上写文件系统(迷你型)筛选器驱动程序

https://msdn.microsoft.com/en-us/library/windows/hardware/ff548202%28v=vs.85%29.aspx

的文件系统过滤驱动器是一个可选的驱动程序,它增加价值 或修改的文件系统的行为。文件系统过滤驱动程序 是作为Windows执行程序的一部分运行的内核模式组件。

文件系统过滤器驱动程序可以过滤一个或多个文件系统或文件系统卷的I/O操作。根据 驱动程序的性质,过滤器可能意味着记录,观察,修改或甚至阻止。用于文件系统过滤驱动程序的典型 应用程序包括防病毒程序 实用程序,加密程序和分层存储管理 系统。

Windows驱动程序示例包含一个微型过滤器驱动程序来检测文件或流的删除。

参见:https://github.com/Microsoft/Windows-driver-samples/tree/master/filesys/miniFilter/delete