首页 > 其他分享 >基于Minifilter的文件过滤驱动以及与应用层通讯

基于Minifilter的文件过滤驱动以及与应用层通讯

时间:2024-01-17 16:25:21浏览次数:37  
标签:文件 IRP 目录 过滤 驱动 Minifilter 应用层

前一段时间在做一个文件过滤系统, 为了配合公司的产品使用,希望对指定目录禁止访问。一开始使用的是sfilter的框架,很多事情需要自己做,创建过滤驱动的控制设备,创建符号链接,设置IRP例程,设置FAST I/O例程,用这个框架做了一半,与应用层通讯比较麻烦,就又去学习了Minifilter框架,这个框架就非常简单了,就是自由度没有sfilter那么大,不过跟老大沟通之后,发现本次需求对边界问题要求比较模糊,就决定使用Minifilter了。

使用Minifilter开发真的方便太多了,我用的是vs2015+WDK10,用VS2015生成项目之后,就会发现所有的例程编译器都帮你绑定好了,你只需要在目的位置添加一些代码就可以搞定,关于与应用层的通讯更是简单,不需要应用层发IRP了,直接建立一个端口通讯,应用层和驱动层保持端口名一致即可。两天就全部搞定了。

这次的拦截操作我在 IRP_MJ_CREATE 请求之前做的。看下微软对这个IRP请求的解释。
I/O管理器会在一个新的文件或目录被创建,或者已存在的文件、设备、目录、卷,被打开的时候发生这个请求。
The I/O Manager sends the IRP_MJ_CREATE request when a new file or directory is being created, or when an existing file, device, directory, or volume is being opened.

也就是说,不管是新建还是打开文件或目录,都会被我的过滤器捕捉到,可以说对操作的捕捉是很完善了。之前我在IRP_MJ_DIRECTORY_CONTROL这个IRP请求发生的时候做的拦截,后来发现使用cmd不能进入目录,但是可以在禁止访问目录的父目录打开目标目录中的文件,比如禁止了FileDriver目录后,直接在父目录使用FileDriver/123.txt 就会打开123.txt,但是现在不会出现这种情况了

这里分享一下相关代码,我是应用层发送路径给驱动层,然后驱动层用链表保存下来,每次I/O操作之前,都去遍历链表里的路径,只要匹配成功就返回没有权限访问,否则IRP继续下发。
————————————————
版权声明:本文为CSDN博主「poison___」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_33504040/article/details/78458958

标签:文件,IRP,目录,过滤,驱动,Minifilter,应用层
From: https://www.cnblogs.com/hshy/p/17970291

相关文章

  • 计算机网络——应用层(3)
    (计算机网络——应用层(3))小程一言我的计算机网络专栏,是自己在计算机网络学习过程中的学习笔记与心得,在参考相关教材,网络搜素的前提下,结合自己过去一段时间笔记整理,而推出的该专栏,整体架构是根据计算机网络自顶向下方法而整理的,包括各大高校教学都是以此顺序进行的。面向群体:在学......
  • 布隆过滤器详解——转载自IT老暖男
    前言我们之前讲了Redis的缓存雪崩、穿透、击穿。在文章里我们说了解决缓存穿透的办法之一,就是布隆过滤器,但是上次并没有讲如何使用布隆过滤器。作为暖男的老哥,给你们补上,请叫我IT老暖男。什么是布隆过滤器布隆过滤器(BloomFilter),是1970年,由一个叫布隆的小伙子提出的,距今已......
  • linux 内核和应用层之间的通信方式
    系统调用应用与内核通信的方式中,最常用的就是系统调用。如常见的open、write、read、ioctl等系统调用。当系统调用时,触发一个软中断,处理器进入内核模式。参数传递到内核空间,完成通信过程。内核完成服务之后,将数据返回给应用,并设置处理器为用户模式。copy_to_user()/copy_from_......
  • 计算机网络——应用层(1)
    (计算机网络——应用层(1))小程一言我的计算机网络专栏,是自己在计算机网络学习过程中的学习笔记与心得,在参考相关教材,网络搜素的前提下,结合自己过去一段时间笔记整理,而推出的该专栏,整体架构是根据计算机网络自顶向下方法而整理的,包括各大高校教学都是以此顺序进行的。面向群体:在学......
  • CAN通信配置过滤器和使用三个邮箱发送
    RM比赛用的电机基本都使用CAN通信,但是一条CAN线上只用一个发送邮箱在挂在设备多的情况可能会导致发送不完,但其实完全可以把三个发送邮箱都用上。这里贴一下自己的CAN筛选器,接收以及发送的代码。完整的工程可以看我开源的飞机云台程序~项目代码开源地址:https://github.com/ittuann......
  • 不雅文字过滤?springboot可以这样做!实战!
    这里主要讲敏感词过滤与替换两个功能,引入相关maven依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boo......
  • 工作四年,关于过滤敏感词,我准备这样干
    ......
  • php 数据安全性(过滤提交的数据)
    1.在common.php公共方法加入/***过滤sql与php文件操作的关键字*/functionfilter_keyword($string){$keyword='select|insert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile';$arr=explode(......
  • 深度学习的推荐系统:从协同过滤到深度神经网络
    1.背景介绍推荐系统是现代互联网公司的核心业务之一,它通过分析用户的历史行为和其他信息,为用户推荐相关的物品、服务或内容。随着数据量的增加,传统的推荐算法已经不能满足需求,深度学习技术在推荐系统中的应用开始崛起。本文将从协同过滤到深度神经网络的推荐系统进行全面介绍。2.核......
  • 美食物管理与推荐系统Python+Django网站开发+协同过滤推荐算法应用【计算机课设项目推
    一、介绍美食管理与推荐系统。本系统使用Python作为主要开发语言开发的一个美食管理推荐网站平台。网站前端界面采用HTML、CSS、BootStrap等技术搭建界面。后端采用Django框架处理用户的逻辑请求,并将用户的相关行为数据保存在数据库中。通过Ajax技术实现前后端的数据通信。创新点......