-
-
[原创]#30天写作挑战#炒冷饭之Minifilter学习
-
发表于:
2020-9-7 19:07
15927
-
[原创]#30天写作挑战#炒冷饭之Minifilter学习
毕业已经有几个月了,迷茫了一阵子最近下定决心走windows内核开发的方向。趁着看雪论坛30天写作挑战活动,记录一下自己在学习过程中的成果。本文关于Minifilter的学习主要是依赖《Windows内核编程》的第十三章的内容
Minifilter驱动是通过向过Filter Manager驱动进行注册自己需要过滤的一些操作,提供指定格式的回调函数让过滤管理器来进行调用。所以它更注重功能实现,不注重更深层的IRP之类的操控。因此整个Minifilter驱动的框架可以简洁的表示为:
DriverEntry->FltRegisterFilter(注册过滤器)->FltStartFiltering(启动过滤器)
查资料发现,Vs2015及以上版本安装WDK组件过后都可以选择创建Minifilter项目,VS会自动生成框架,但其中还有一些需要设置的地方。接下来会详细介绍:
其中Class ClassGuid是需要设置的,当然也可以用注释中的缺省值。
倒数第二行的Altitude值是微过滤器的层级码,具体内容可以参照上面的链接
这里可以设置为370030表示层中的位置
Vs生成的框架默认是没有注册任何回调的,可以根据自己需要在//TODO注释后声明自己要过滤的操作和回调函数。也可以偷懒直接吧if 0 修改成if 1 直接过滤所有操作。当然此声明中Vs提供了默认的回调函数,也可以自行选择修改
Vs已经为我们生成好了默认的回调函数
废话不多说,直接上代码!
这样 calc.exe 就不能读取、删除、覆盖、重命名和运行了,这是基于书中的代码实现的功能,也是一个简单的过滤操作的实现。
也是查阅了相关资料,自己实现了打开读写1.txt实际上会重定向另一目录下的2.txt
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课