JeTus
驱动牛犊
驱动牛犊
  • 注册日期2007-09-22
  • 最后登录2010-01-17
  • 粉丝3
  • 关注0
  • 积分84分
  • 威望781点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1770回复:4

文件头的问题,各位好心妞妞帮帮忙,先谢谢了

楼主#
更多 发布于:2009-11-25 10:47
情况是这样的,我现在写了个在文件头做标志的文件过滤,过滤了SetInformation,QueryInformation,read,write,FastIoReadWrite,FastQuery等操作,因为有些原因我在write里面接收管理Irp(IRP_PAGING_IO|IRP_SYNCHRONOUS_PAGING_IO|IRP_NOCACHE)等的时候只是简单的把offset加上标志头大小,然后就让它pass了。

不过我在管理read的时候,对于(IRP_PAGING_IO|IRP_SYNCHRONOUS_PAGING_IO|IRP_NOCACHE),我是通过自己构建IRP_MJ_READ的Irp去读取数据,然后在把数据填充在上面发送过来的Irp中的SystemBuffer(其他几个buffer也在)里面的。
我现在所面临的问题有以下几个:

1,标志头有时候可以隐藏,有时候隐藏不了;
2,当我打开notepad写内容,然后保存的时候会出现“不能打开文件:(路劲)xxx.txt,请确认指定的驱动器中是否有盘”;
3,当我在read派遣中不自己构建Irp去获取数据是,那个文件头根本就隐藏不了;
4,如果可以,能否告知我还应该处理那些问题;
5,那个FileSize,CurrentByteOffset,irp堆栈的ByteOffset是什么一种关系;
6,在read自己构建Irp获取数据的时候填充上层发来的Irp应该注意点什么;

由于本人水平有限,在文件过滤这一块研究的还不够透彻,又无法找到更好的资料来解析,只能来这请求大家帮帮我,希望各位妞妞不吝赐教,先拜谢了。
JeTus
驱动牛犊
驱动牛犊
  • 注册日期2007-09-22
  • 最后登录2010-01-17
  • 粉丝3
  • 关注0
  • 积分84分
  • 威望781点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2009-11-25 11:51
重新跟踪了一遍,发现我在Read派遣里构建的Irp怎么返回值Irp->IoStatus.Information总是0 ?的
不构建Irp去读取的一般都不为0的啊
zhsh200
驱动牛犊
驱动牛犊
  • 注册日期2005-01-27
  • 最后登录2013-07-18
  • 粉丝0
  • 关注0
  • 积分25分
  • 威望212点
  • 贡献值1点
  • 好评度54点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2009-11-26 11:26
加密标识放在文件头部,处理起来非常复杂,建议放在文件尾部,会简单很多!
JeTus
驱动牛犊
驱动牛犊
  • 注册日期2007-09-22
  • 最后登录2010-01-17
  • 粉丝3
  • 关注0
  • 积分84分
  • 威望781点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2009-11-27 09:29
回 2楼(zhsh200) 的帖子
已经处理好了,谢谢大哥的答复。
能不能问个问题,为什么我自己构建IRP发往底层去读取数据时,填写的Irp->UserIosb中的Status和Information的值不会改变的呢?
不过Irp->IoStatus.Status和Information的值都变了的。
feng_zhibing
驱动牛犊
驱动牛犊
  • 注册日期2009-12-11
  • 最后登录2009-12-23
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望191点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2009-12-11 14:19
能向楼主请教一下,你是怎么把加密标识添到文件头的吗???
游客

返回顶部