前段时间借助开源项目 EasyHook 制作了一个在应用层下的监控进程创建的工具。但应用层实现有一些限制,比如 Hook 时风险较高、能取到的信息有限、XP 和 Win7 需要 Hook 不同的函数等。这些问题最终让我向内核研究,希望可以通过一份代码,编译出适应不同系统的驱动程序实现我们的需求,所以就有了本文的内容,我们先来看一下效果图。
与应用层不同的是,驱动不仅可以监控进程的创建,还可以监控进程的退出。这全部是 Windows 系统给我们提供的功能。由于我们编译使用的是 WDK10,已经不支持 XP 了,若想在 XP 下实现如上功能,可以参考进程创建通知回调例程学习笔记。
程序代码
这个程序是我在学习驱动开发过程中的一个示例程序,如果要使用还需要进一步完善,所以我将代码上传到 github 中,大家可以自己下载进行编译(直接用 VS2015 打开编译即可,需要安装 WDK 环境,点击查看如何搭建 VS2015 WDK10 开发环境)。 Github 代码地址:https://github.com/nmgwddj/Learn-Windows-Drivers/tree/master/ProcessMonitor
如何使用
将代码下载到本地后,使用 VS2015 编译会生成 ProcessMonitor.sys 驱动文件。随后找一台虚拟机进行测试,开启虚拟机时按下 F8 键,选择 “禁用驱动程序签名强制” 启动系统。
进入系统后找一些驱动加载工具,将驱动加载起来,通过 DebugView 就可以看到程序的输出信息了(DebugView 不显示调试信息处理办法)。