【问题标题】:C++ Windows API Syscall Hook Example [closed]C++ Windows API Syscall 挂钩示例 [关闭]
【发布时间】:2016-04-05 21:09:18
【问题描述】:

我刚开始学习 C++ 编程,为了练习,我想学习如何编写 Windows API Syscall Hook。例如,如果我将尝试删除具有特定名称的文件,例如“test.txt”,则不会删除它,而是会弹出一条消息。我尝试搜索有关如何执行此类操作的教程,但找不到任何内容。

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

我正在使用 Windows 10 机器和 Visual Studio 2015。

【问题讨论】:

  • 这更多地与 windows API 和 windows 相关库有关,而不是 C++ 本身。您可能需要了解弹出窗口的 winforms。
  • 据我所知,与 Linux 相比,Windows 不支持将其作为其 API 的一部分;有一些针对非常特定的 Windows API 子集的目标方法(例如创建自定义驱动程序以拦截文件 IO),以及一些在 thunk 级别工作且需要 x86/x64 汇编器知识的低级方法。只是出于好奇,您为什么认为这可以在一个简单的代码示例中完成?
  • 这是可能的,但非常困难。这不是一个适合初学者的项目。

标签: c++ windows winapi system-calls


【解决方案1】:

编写一个文件系统(微型)过滤器驱动程序

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2016-08-08
    • 1970-01-01
    • 1970-01-01
    • 2011-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-02
    • 1970-01-01
    相关资源
    最近更新 更多