c - 使用 Windows MiniFilter 驱动程序拦截进程访问

标签 c windows kernel driver minifilter

我正在开发一个安全应用程序,它应该监控任何进程的事件。

感谢 MiniFilter sample provided by Microsoft on GitHub,我通过安装 MiniFilter 驱动程序成功拦截了文件访问.

但是,我没有找到任何关于如何使用 Minifilter 拦截进程创建/终止的文档。

我想拦截任何父进程(可以使用 CreateProcess、ShellExecute 等函数)创建的新进程。

我还想拦截进程终止信号(由 TerminateProcess 等 API 发送)以避免我的安全程序进程被潜在的恶意软件杀死。

目前我在我的 minifilter 驱动程序中设置了一个回调函数,它成功地拦截了文件 I/O 操作,正如 Microsoft 示例所指示的:

FLT_POSTOP_CALLBACK_STATUS ScannerPostCreate (
    _Inout_ PFLT_CALLBACK_DATA CallbackData,
    _In_ PCFLT_RELATED_OBJECTS FltObjects,
    _In_opt_ PVOID CompletionContext,
    _In_ FLT_POST_OPERATION_FLAGS Flags
    )

我的问题是,我可以使用相同的回调函数来拦截进程访问吗? 或者,我需要设置不同的回调函数,还是使用完全不同的方法?

最佳答案

由于 minifilter 是一个内核模块,您可以使用内核/HAL 或其他内核模块导出的任何例程。例如,PsSetCreateProcessNotifyRoutine。

关于c - 使用 Windows MiniFilter 驱动程序拦截进程访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58420338/

相关文章:

c++ - 如何确保执行相同功能的两个线程互斥

java - 当我尝试保存测试计划时,为什么会收到 NoClassDefFound 错误?

python - 只有 py 文件时隐藏控制台(没有 pyw)[ANKI 附加组件]

linux - 单步调试 Linux 内核源代码?

c - DMA 传输到 Linux 中的从属 PCI 设备

linux - printk() 不在/var/log/messages 中打印

c - 如何比较 C 字符串中的子字符串和解析数字

c - 将文本文件转换为动态结构数组 C 编程

c - 像 kbhit 这样的标准函数是什么?

指定路径的Java JDK静默安装