irppp
驱动牛犊
驱动牛犊
  • 注册日期2009-02-16
  • 最后登录2010-03-26
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望81点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2144回复:3

菜鸟求助 关于路径过滤 (在群里问 没人理我。。。)

楼主#
更多 发布于:2009-05-07 18:49
路径过滤  通过看楚狂人的书   我知道三种方法    获取全路径肯定是需要的  
1 自己下发IRP可以实现路径的过滤 但是我从没试过这个  而且是非文档化的  
2  在对应的IRP中获取文件的路径 就是在FileObject->FileName中  但这个会存在短名   楚狂人给的方案就是用ZwQueryDirectoryFile依次打开目录得到_FILE_ID_BOTH_DIR_INFORMATION依次获取  得到全路径   但是这个函数好像会发送IRP_MJ_DIRECTORY_CONTROL  这样会有些重入问题吧?
3  还有一个我有把握做出来的  就是在create中获得  全路径与FileObject指针一一对应  保存到全局中  在clean中删除这个以防止内存泄漏  在其余的IRP处理中用FileObject获取对应路径 这过滤方式好像效率不是很高
还有:   获取的文件路径FileObject->FileName中不会有对应的盘符    ObQueryNameString函数得到的盘符也是volumename  目前我知道的最好的方法就是 在绑定卷时 获得volumename  并用RtlVolumeDeviceToDosName函数获取对应的盘符  一起存到设备扩展中  以后就可以直接从设备扩展中获取盘符了
偶是初学者 以上可能有错误 希望各位大虾能指正下  请教下  路径过滤用哪种方法比较好  现在最常用的文件访问控制之类的文件路径过滤是用的哪种方法?
学驱动有四五个月了     偶是第一次发帖啊!

 
 
想做的效果:用户可以选择对指定文件进行隐藏 禁止访问 对其监控 。。。。
已经实现:在create中获得全路径     在IRP_MJ_DIRECTORY_CONTROL 中实现了对文件隐藏 但是传的只文件的filename而对于全路径传上去没用  具体看下这个帖子
http://bbs.driverdevelop.com/htm_data/39/0810/114099.html  我是按这种方案做的隐藏    
对于禁止访问的方案:在create中匹配路径 父目录相同就IRP失败  
对于文件监控:在应用层过滤下不用的信息就可以了
 
很惭愧   水平太低   希望大家给点学习的建议
 
michaelgz
论坛版主
论坛版主
  • 注册日期2005-01-26
  • 最后登录2012-10-22
  • 粉丝1
  • 关注1
  • 积分150分
  • 威望1524点
  • 贡献值1点
  • 好评度213点
  • 原创分0分
  • 专家分2分
沙发#
发布于:2009-05-07 22:46
Re:菜鸟求助    关于路径过滤   (在群里问 没人理我。。。)
1 自己下发IRP可以实现路径的过滤 但是我从没试过这个  而且是非文档化的

It seems a custom build IRP cannot be avoided if you really want to develop a product.

2  在对应的IRP中获取文件的路径 就是在FileObject->FileName中, 但这个会存在短名

This field is only valid in CREATE dispatch routine. Either using ZwQueryDirectoryFile or building your own query IRP to get full path.

3  就是在create中获得  全路径与FileObject指针一一对应  保存到全局中  在clean中删除这个以防止内存泄漏

Suggest using FsContext instead of FileObject. FileObject is deleted in MJ_CLOSE, not MJ_CLEANUP.

这过滤方式好像效率不是很高

Don't know where you get this.

获取的文件路径FileObject->FileName中不会有对应的盘符

Suggest using VolumeName in kernel. 盘符 is just a symbolic link.


Why don't you try Mini-Filter. It's much easier for a newcomer.
210llzty
驱动牛犊
驱动牛犊
  • 注册日期2008-09-08
  • 最后登录2009-08-04
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望141点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2009-05-08 10:54
自己构造IRP下发 获得文件全路径名
jununfly
驱动牛犊
驱动牛犊
  • 注册日期2008-10-17
  • 最后登录2010-06-01
  • 粉丝0
  • 关注0
  • 积分86分
  • 威望560点
  • 贡献值2点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2009-05-08 13:59
呵呵,顶沙发,
我看到你在群里的帖子了,用minifilter,获取文件的全路径名只是一个简单的函数调用。
cleanup和close的语义可不是你想的字面意思。要想学好学得快,不动手,不下劲去理解源码是不行的
游客

返回顶部