首页
社区
课程
招聘
[原创]#30天写作挑战#炒冷饭之Minifilter学习
发表于: 2020-9-7 19:07 15948

[原创]#30天写作挑战#炒冷饭之Minifilter学习

2020-9-7 19:07
15948

毕业已经有几个月了,迷茫了一阵子最近下定决心走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


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 7
支持
分享
最新回复 (6)
雪    币: 83
活跃值: (1087)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
2
666
2020-9-8 16:15
0
雪    币: 23080
活跃值: (3432)
能力值: (RANK:648 )
在线值:
发帖
回帖
粉丝
3
感谢分享!
2020-9-8 19:46
0
雪    币: 26185
活跃值: (63307)
能力值: (RANK:135 )
在线值:
发帖
回帖
粉丝
4

感谢分享!

欢迎更多的小伙伴参与到 #30天写作挑战#中来!活动详情:https://bbs.pediy.com/thread-261705.htm


2020-9-9 10:19
0
雪    币: 26185
活跃值: (63307)
能力值: (RANK:135 )
在线值:
发帖
回帖
粉丝
5
点赞收藏关注 三连走起!
2020-9-9 10:19
0
雪    币: 63
活跃值: (17)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
6
支持一下,现在学minifilter的人应该不多了
UNICODE_STRING应该是不保证以0结尾,
使用wcsstr来搜索UNICODE_STRING可能会有问题的
2020-9-25 18:31
0
雪    币: 1319
活跃值: (1960)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
nevergone 支持一下,现在学minifilter的人应该不多了 UNICODE_STRING应该是不保证以0结尾, 使用wcsstr来搜索UNICODE_STRING可能会有问题的
楼上正解,这个是内核基础编程常见的问题。
2020-9-28 11:15
0
游客
登录 | 注册 方可回帖
返回
//