fatmouse527
驱动牛犊
驱动牛犊
  • 注册日期2006-12-27
  • 最后登录2009-04-10
  • 粉丝1
  • 关注0
  • 积分347分
  • 威望85点
  • 贡献值0点
  • 好评度81点
  • 原创分1分
  • 专家分0分
阅读:3408回复:22

如果改变文件长度呀,我知道这个问题困惑着大家,请大牛给个思路就好

楼主#
更多 发布于:2007-02-02 12:04
  在受控的文件前面增加一个加密标志,然后我们驱动程序读取的时候识别它,决定是否加解密。而这个标志对应用层是完全透明的。

我想了解在什么时候改变长度,在那改变?
或有什么其它方法

最新喜欢:

Dragon_RiderDragon...
驱网无线,快乐无限
xmzhou_98
驱动牛犊
驱动牛犊
  • 注册日期2005-10-05
  • 最后登录2018-02-12
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望80点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2007-02-02 13:37
我也在做这个东西,似乎不太容易实现呢.请各位大牛指点
fatmouse527
驱动牛犊
驱动牛犊
  • 注册日期2006-12-27
  • 最后登录2009-04-10
  • 粉丝1
  • 关注0
  • 积分347分
  • 威望85点
  • 贡献值0点
  • 好评度81点
  • 原创分1分
  • 专家分0分
板凳#
发布于:2007-02-02 16:17
找到一个大牛的总结,和大家分享一下,如果我能试出结果就把代码和大家分享,:)

1) 出现于上层发送到我这里,当我这里使用 IoCallDriver() 后,底层返回数
据经过我这一层时,我想让它暂时停止继续向上传递,让这个 IRP 稍微歇息
一会,等我对这个 IRP 返回的数据操作完成后(一般是没有在 CompleteRoutine
中对返回数据进行操作情况下,也就是说等到完成例程返回后再进行操作),由
我来调用 IoCompleteRequest() 让它延着设备栈继续返回。这里要注意,我们
是想让它返回的,所以调用了 IoCompleteRequest()。这个可不同于下面所讲的
自己从头分配 IRP 时在 CompleteRoutine 中已经调用 IoFreeIrp() 释放了当前
IRP 的情况。比如我在做一个改变文件大小,向文件头写入加密标志的驱动时,
在上层发来了 IRP_MJ_QUERY_INFORMATION 查询文件,我想在这个时候获得文件
信息进行判断,然后根据我的判断结果再移动文件指针。注意:上面是两步,第
一步是先获得文件大小,那么在这个时候我就需要用到上述办法,先让这个 IRP
传递下去,得到我想要的东西后在进行对比。等待适当时机完成这个 IRP,让数
据继续传递,直到用户收到为止。第二步我会结合下面小节来讲。

2) 出现于自己从头建立 IRP,当使用 IoAllocate() 或 IoBuildAsynchronousFsdRequest()
创建 IRP 调用 IoCallDriver() 后,底层返回数据到我这一层时,我不想让这
个 IRP 继续向上延设备栈传递。因为这个 IRP 就是在我这层次建立的,上层本
就不知道有这么一个 IRP。那么到这里我就要在 CompleteRoutine 中使用 IoFreeIrp()
来释放掉这个 IRP,并不让它继续传递。这里一定要注意,在 CompleteRoutine
函数返回后,这个 IRP 已经释放了,如果这个时候在有任何关于这个 IRP 的操作
那么后果是灾难性的,必定导致 BSOD 错误。前面 1) 小节给出的例子只完成了第
一步这里继续讲第二步,第一步我重用这个 IRP 得到了文件大小,那么这个时候虽
然知道大小,但我还是无法知道这个文件是否被我加过密。这时,我就需要在这里
自己从头建立一个 IRP_MJ_READ 的 IRP 来读取文件来判断是否我加密过了的文件,
如果是,则要减少相应的大小,然后继续返回。注意:这里的返回是指让第一步的
IRP 返回。而不是我们自己创建的。我们创建的都已经在 CompleteRoutine 中销
毁了。
驱网无线,快乐无限
reborn
驱动小牛
驱动小牛
  • 注册日期2006-07-21
  • 最后登录2007-10-13
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望144点
  • 贡献值0点
  • 好评度143点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-02-06 19:18
请教楼上大牛:如果我在加密文件头加入了加密标志,在读取该文件时能不能保证获得的第一个IRP_MJ_READ一定是包含头的那个IRP啊,写的时候也一样的问题存不存在啊
fatmouse527
驱动牛犊
驱动牛犊
  • 注册日期2006-12-27
  • 最后登录2009-04-10
  • 粉丝1
  • 关注0
  • 积分347分
  • 威望85点
  • 贡献值0点
  • 好评度81点
  • 原创分1分
  • 专家分0分
地下室#
发布于:2007-02-08 09:36
我现在也在尝试,我现在试的:
在Create中判断是否需要加密,是否已加密(自己创造irp下去读,然后判断),如果有加密标志,就删掉它。
在cleanup时把加密标志加上。
驱网无线,快乐无限
yandong_8212
驱动小牛
驱动小牛
  • 注册日期2006-07-28
  • 最后登录2011-02-11
  • 粉丝0
  • 关注0
  • 积分1046分
  • 威望464点
  • 贡献值1点
  • 好评度173点
  • 原创分0分
  • 专家分1分
5楼#
发布于:2007-02-09 11:37
虚进虚出,实写文件。
就是你文件的实际长度应该是加上你的头的,但你返回给应用层的却是去掉那个长度的。

需要处理READ/WRITE/SET/QUERY

反正就是,你的偏移和应用层的偏移是不同的,所有IRP进入和退出都需要做处理,自己研究吧.
商务MSN:YanDong_8212@163.com
fazwh
驱动牛犊
驱动牛犊
  • 注册日期2005-09-11
  • 最后登录2020-11-18
  • 粉丝0
  • 关注0
  • 积分32分
  • 威望303点
  • 贡献值0点
  • 好评度48点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2007-02-13 10:24
yandong_8112
成功了没有?
yandong_8212
驱动小牛
驱动小牛
  • 注册日期2006-07-28
  • 最后登录2011-02-11
  • 粉丝0
  • 关注0
  • 积分1046分
  • 威望464点
  • 贡献值1点
  • 好评度173点
  • 原创分0分
  • 专家分1分
7楼#
发布于:2007-02-13 10:53
我做过类似的.
商务MSN:YanDong_8212@163.com
fatmouse527
驱动牛犊
驱动牛犊
  • 注册日期2006-12-27
  • 最后登录2009-04-10
  • 粉丝1
  • 关注0
  • 积分347分
  • 威望85点
  • 贡献值0点
  • 好评度81点
  • 原创分1分
  • 专家分0分
8楼#
发布于:2007-02-13 18:21
有点明白了,努力中
有点明白了,努力中。
在读前
IrpSp->Parameters.Read.ByteOffset.LowPart+4096

在读后
IrpSp->Parameters.Read.ByteOffset.LowPart - 4096

还在摸索,如有错误请指正
驱网无线,快乐无限
lsxredrain
驱动中牛
驱动中牛
  • 注册日期2006-08-31
  • 最后登录2008-10-18
  • 粉丝1
  • 关注0
  • 积分540分
  • 威望421点
  • 贡献值1点
  • 好评度420点
  • 原创分4分
  • 专家分0分
9楼#
发布于:2007-02-15 17:28
IrpSp->Parameters.Read.ByteOffset.LowPart  
IrpSp->Parameters.Write.ByteOffset.LowPart

从0开始,第一次读4096,
以后至少读n*4096 ??

如果读到文件尾,
则又开始从0开始读
devia
论坛版主
论坛版主
  • 注册日期2005-05-14
  • 最后登录2016-04-05
  • 粉丝3
  • 关注0
  • 积分1029分
  • 威望712点
  • 贡献值1点
  • 好评度555点
  • 原创分8分
  • 专家分4分
10楼#
发布于:2007-02-16 11:04
最近在OSR上泡了2周多,终于完美的实现了文件的变长处理,提示如下:

处理QUERY(FILE、DIR)/SET/READ/WRITE,其中要考虑过滤效率和自己读写文件的诸多问题;

其实这个技术已经被老外应用于RootKit中。
人总在矛盾中徘徊。。。
我最老实
驱动小牛
驱动小牛
  • 注册日期2005-09-11
  • 最后登录2010-01-27
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望253点
  • 贡献值0点
  • 好评度189点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2007-02-16 17:16
引用第10楼devia2007-02-16 11:04发表的“”:
最近在OSR上泡了2周多,终于完美的实现了文件的变长处理,提示如下:

处理QUERY(FILE、DIR)/SET/READ/WRITE,其中要考虑过滤效率和自己读写文件的诸多问题;

其实这个技术已经被老外应用于RootKit中。


Rootkit 中也用到这种技术?
养牛专业户
lsxredrain
驱动中牛
驱动中牛
  • 注册日期2006-08-31
  • 最后登录2008-10-18
  • 粉丝1
  • 关注0
  • 积分540分
  • 威望421点
  • 贡献值1点
  • 好评度420点
  • 原创分4分
  • 专家分0分
12楼#
发布于:2007-02-25 08:22
引用第10楼devia2007-02-16 11:04发表的“”:
最近在OSR上泡了2周多,终于完美的实现了文件的变长处理,提示如下:

处理QUERY(FILE、DIR)/SET/READ/WRITE,其中要考虑过滤效率和自己读写文件的诸多问题;

其实这个技术已经被老外应用于RootKit中。

变长处理后和杀毒软件冲突吗?
killvxk
论坛版主
论坛版主
  • 注册日期2005-10-03
  • 最后登录2014-04-14
  • 粉丝3
  • 关注1
  • 积分1082分
  • 威望2003点
  • 贡献值0点
  • 好评度1693点
  • 原创分2分
  • 专家分0分
13楼#
发布于:2007-02-25 11:38
隐藏某些可执行文件内的某段Code(添加节方法文件增大了,但是绝对表面上看不出来)~~
没有战争就没有进步 X3工作组 为您提供最好的军火
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
14楼#
发布于:2007-02-25 13:22
引用第10楼devia2007-02-16 11:04发表的“”:
最近在OSR上泡了2周多,终于完美的实现了文件的变长处理,提示如下:

处理QUERY(FILE、DIR)/SET/READ/WRITE,其中要考虑过滤效率和自己读写文件的诸多问题;

其实这个技术已经被老外应用于RootKit中。



你看的是rookit?如果有,可否帖上来?
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
hongpengtao
驱动小牛
驱动小牛
  • 注册日期2006-03-16
  • 最后登录2015-06-03
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望190点
  • 贡献值0点
  • 好评度104点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2007-02-25 13:53
我也想看一下相关的资料  希望大牛不吝赐教
hongpengtao
驱动小牛
驱动小牛
  • 注册日期2006-03-16
  • 最后登录2015-06-03
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望190点
  • 贡献值0点
  • 好评度104点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2007-02-26 15:19
老大们有没有相关文件变长处理的资料

小弟也有这方面的需求

也希望板主能开个主题大家来讨论讨论
devia
论坛版主
论坛版主
  • 注册日期2005-05-14
  • 最后登录2016-04-05
  • 粉丝3
  • 关注0
  • 积分1029分
  • 威望712点
  • 贡献值1点
  • 好评度555点
  • 原创分8分
  • 专家分4分
17楼#
发布于:2007-02-26 20:24
引用第12楼lsxredrain2007-02-25 08:22发表的“”:

变长处理后和杀毒软件冲突吗?


是否和杀毒软件有冲突,我只简单测试过Mcafee和Norton;
在OSR上有篇比较好的文章,是关于文件过滤驱动和杀毒软件
之间的冲突的原因、避免方法等问题的讨论:
附件名称/大小 下载次数 最后更新
Living in Harmony -- File System Filter-to-Filter Interaction.doc (83KB)  76 2007-02-26 20:24
人总在矛盾中徘徊。。。
hongpengtao
驱动小牛
驱动小牛
  • 注册日期2006-03-16
  • 最后登录2015-06-03
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望190点
  • 贡献值0点
  • 好评度104点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2007-02-27 09:30
谢谢 devia的热心

我先去好好研究不明白地方再请教

再次谢谢
我最老实
驱动小牛
驱动小牛
  • 注册日期2005-09-11
  • 最后登录2010-01-27
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望253点
  • 贡献值0点
  • 好评度189点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2007-02-27 20:06
引用第18楼hongpengtao2007-02-27 09:30发表的“”:
谢谢 devia的热心

我先去好好研究不明白地方再请教

再次谢谢


你到osr的坛子上看看就能解决。不要对国人抱太大希望。
养牛专业户
上一页
游客

返回顶部