lsxredrain
驱动中牛
驱动中牛
  • 注册日期2006-08-31
  • 最后登录2008-10-18
  • 粉丝1
  • 关注0
  • 积分540分
  • 威望421点
  • 贡献值1点
  • 好评度420点
  • 原创分4分
  • 专家分0分
阅读:17596回复:89

filespy修改版(增加了tooflat的write和read)修订版

楼主#
更多 发布于:2007-05-18 17:43
devia说filespy比sfilter稳定,
我移植了tooflat部分代码到filespy中,hook 了write 和read ,
加密标记还没有处理好.
我抛块砖头,希望更多的同路人人加入到filespy模型中来

小结一下:
经过多日的努力,终于解决好了与杀毒软件冲突的问题,小结一下自己的一点体会:

1.经测试原始的Sfilter与FileSpy与杀毒软件不冲突;

2.tooflat的sfilter与杀毒软件冲突的几个地方:
   a.使用Zw****系列函数读取规则和加密标记;
   b.使用RtlInsertElementGenericTable相关的函数来存储文件上下文,具体是哪里引起的没有详细分析,我现在是自己构造hash来存储.存文件上下文指针和加密标记,保证了文件加密标记的持久性.
使用 KeAcquireSpinLock( &gHashLockTable[hashIndex], &oldIrql );
KeReleaseSpinLock( &gHashLockTable[hashIndex], oldIrql );
SfForwardIrpSyncronously,SfUpdateFileByFileObject
来同步文件上下文表,不要用
KeInitializeEvent(&Event, NotificationEvent, FALSE);
KeWaitForSingleObject(&Event, Executive, KernelMode, FALSE, NULL);
来同步


3.tooflat的精华部分,除了devia说的write和read例程,他的SfIsFileNeedEncrypt,SfForwardIrpSyncronously,SfUpdateFileByFileObject也是相当经典的,其中SfForwardIrpSyncronously,SfUpdateFileByFileObject对更新和同步FileObject->FsContext是功不可末.

4.关于加密标记的选择,总得来说加密标记包括:
    a.外部加密标记法,如tooflat的加密标记文件,修改文件时间,加密文件数据库等
  b.内部加密标记法;主要包括压缩法和扩展法(标记可以放文件头或者文件尾,也不排除放文件中间),
       扩展法相对来说比较复杂,但是灵活性和通用性比较强,压缩法实现比较简单,稳定性比较好.
    我个人是选择压缩法和修改文件时间法组合使用,这样一来可以避开很多烦恼来获得相对稳定的产品.

5.驱动层与应用层稳定快捷的消息机制也是我们向应用层借力的重要保障.

6.过滤模型选择我最终还是选择了filespy,它有很多优点.

7.挂载
       WCHAR  WebVolume[50] = L"\\Device\\WebDavRedirector\0";
    WCHAR  NetVolume[50] = L"\\Device\\LanmanRedirector\0";
                    
        if(!NT_SUCCESS(SpyStartLoggingDevice(WebVolume)))
        {
            KdPrint(("SFilter!加载Web磁盘失败!\n"));
        }
        else
        {
            KdPrint(("SFilter!加载Web磁盘成功!\n"));
        }

        if(!NT_SUCCESS(SpyStartLoggingDevice(NetVolume)))
        {
            KdPrint(("SFilter!加载网络磁盘失败!\n"));
        }
        else
        {
            KdPrint(("SFilter!加载网络磁盘成功!\n"));
        }
附件名称/大小 下载次数 最后更新
filespy.rar (112KB)  1338 2007-05-18 17:43

最新喜欢:

linshierlinshi...
killvxk
论坛版主
论坛版主
  • 注册日期2005-10-03
  • 最后登录2014-04-14
  • 粉丝3
  • 关注1
  • 积分1082分
  • 威望2003点
  • 贡献值0点
  • 好评度1693点
  • 原创分2分
  • 专家分0分
沙发#
发布于:2007-05-18 18:56
不错啦~
没有战争就没有进步 X3工作组 为您提供最好的军火
qiweixue
驱动小牛
驱动小牛
  • 注册日期2004-07-21
  • 最后登录2011-12-19
  • 粉丝0
  • 关注0
  • 积分1006分
  • 威望274点
  • 贡献值0点
  • 好评度268点
  • 原创分1分
  • 专家分0分
板凳#
发布于:2007-05-18 19:15
学习  
lsxredrain
驱动中牛
驱动中牛
  • 注册日期2006-08-31
  • 最后登录2008-10-18
  • 粉丝1
  • 关注0
  • 积分540分
  • 威望421点
  • 贡献值1点
  • 好评度420点
  • 原创分4分
  • 专家分0分
地板#
发布于:2007-05-18 20:41
呵呵,代码写得比较乱,
周末加加班,争取把文件加密标识表做好,另外,也希望论坛上能看到更多关于filespy的讨论,
sfilter和filemon可能真是一条不归之路.
killvxk
论坛版主
论坛版主
  • 注册日期2005-10-03
  • 最后登录2014-04-14
  • 粉丝3
  • 关注1
  • 积分1082分
  • 威望2003点
  • 贡献值0点
  • 好评度1693点
  • 原创分2分
  • 专家分0分
地下室#
发布于:2007-05-19 10:23
filespy sfilter都有其存在的理由~
至于filemon那个不是正规的玩意~
没有战争就没有进步 X3工作组 为您提供最好的军火
devia
论坛版主
论坛版主
  • 注册日期2005-05-14
  • 最后登录2016-04-05
  • 粉丝3
  • 关注0
  • 积分1029分
  • 威望712点
  • 贡献值1点
  • 好评度555点
  • 原创分8分
  • 专家分4分
5楼#
发布于:2007-05-21 08:27
不错!
人总在矛盾中徘徊。。。
looksail
荣誉会员
荣誉会员
  • 注册日期2005-05-22
  • 最后登录2014-03-15
  • 粉丝2
  • 关注0
  • 积分1016分
  • 威望991点
  • 贡献值0点
  • 好评度239点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-05-21 09:17
FileMon还是有很多代码值得参考的

在Filter里面用Hook这个词总觉得别扭

我的代码不和框架的代码混在一起,单独写,然后通过自己的BeforeXXX,AfterXXX的函数插入到各分派历程中,需要换个框架时,拷贝、粘贴分分钟就搞定了
提问归提问,还是只能靠自己
lsxredrain
驱动中牛
驱动中牛
  • 注册日期2006-08-31
  • 最后登录2008-10-18
  • 粉丝1
  • 关注0
  • 积分540分
  • 威望421点
  • 贡献值1点
  • 好评度420点
  • 原创分4分
  • 专家分0分
7楼#
发布于:2007-05-21 09:57
请问devia, 你的filespy中是用 RtlLookupElementGenericTable 来存文件加密状态吗?
这种方法会不会导致与其他杀毒软件冲突?
正在犹豫用filespy自己的那个recordlist来存文件加密状态还是用RtlLookupElementGenericTable 来存>>
devia
论坛版主
论坛版主
  • 注册日期2005-05-14
  • 最后登录2016-04-05
  • 粉丝3
  • 关注0
  • 积分1029分
  • 威望712点
  • 贡献值1点
  • 好评度555点
  • 原创分8分
  • 专家分4分
8楼#
发布于:2007-05-21 12:52
引用第7楼lsxredrain于2007-05-21 09:57发表的  :
请问devia, 你的filespy中是用 RtlLookupElementGenericTable 来存文件加密状态吗?
这种方法会不会导致与其他杀毒软件冲突?
正在犹豫用filespy自己的那个recordlist来存文件加密状态还是用RtlLookupElementGenericTable 来存>>


我试过这两种方法都很正常
人总在矛盾中徘徊。。。
lsxredrain
驱动中牛
驱动中牛
  • 注册日期2006-08-31
  • 最后登录2008-10-18
  • 粉丝1
  • 关注0
  • 积分540分
  • 威望421点
  • 贡献值1点
  • 好评度420点
  • 原创分4分
  • 专家分0分
9楼#
发布于:2007-05-21 13:09
谢谢
,那我还是把filespy中的recordlist屏敝掉算了,用tooflat的那个比较简单一些
humerousman
驱动牛犊
驱动牛犊
  • 注册日期2007-04-12
  • 最后登录2007-10-29
  • 粉丝0
  • 关注0
  • 积分390分
  • 威望40点
  • 贡献值0点
  • 好评度39点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2007-06-01 11:53
请教lsxredrain 大哥:
    我在Windows Driver Kits\WDK 6000\Build Environments\Windows XP\Windows XP x86 Checked Build Environment环境下,对您的filespy.rar 修改版进行build,可是出现错误,出现一个对话框:“Mincrosoft(R) NT Build Engine 遇到问题需要关闭。我们对此引起的不便表示抱歉。”
    请问你的程序运行成功没有呢?应该怎样解决这个问题呢?
    静候回复
lsxredrain
驱动中牛
驱动中牛
  • 注册日期2006-08-31
  • 最后登录2008-10-18
  • 粉丝1
  • 关注0
  • 积分540分
  • 威望421点
  • 贡献值1点
  • 好评度420点
  • 原创分4分
  • 专家分0分
11楼#
发布于:2007-06-01 13:08
我是在ifs2k3sp1+vc2003编译没有问题,程序运行也没有问题
wengzuhong
驱动小牛
驱动小牛
  • 注册日期2004-07-16
  • 最后登录2014-10-22
  • 粉丝3
  • 关注1
  • 积分9分
  • 威望262点
  • 贡献值0点
  • 好评度219点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2007-06-01 17:31
namelookup.h文件没有????
humerousman
驱动牛犊
驱动牛犊
  • 注册日期2007-04-12
  • 最后登录2007-10-29
  • 粉丝0
  • 关注0
  • 积分390分
  • 威望40点
  • 贡献值0点
  • 好评度39点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2007-06-04 12:51
lsxredrain 大哥:
    向你求救了!小弟我现在用的是VC++6.0、Compuware DriverStudio3.2、DDK6000,可是我调试不出来啊。是在VC环境下用“DDK”build呢?还是用F7来build 呢?或者是在Windows Driver Kits\WDK 6000\Build Environments\Windows XP\Windows XP x86 Checked Build Environment环境下,对“filespy.rar 修改版”进行build呢?
    能留一个您的电话号码电联吗?我很急啊!!
lsxredrain
驱动中牛
驱动中牛
  • 注册日期2006-08-31
  • 最后登录2008-10-18
  • 粉丝1
  • 关注0
  • 积分540分
  • 威望421点
  • 贡献值1点
  • 好评度420点
  • 原创分4分
  • 专家分0分
14楼#
发布于:2007-06-04 14:02
原版的filespy能编译吗?
sosojohn
论坛版主
论坛版主
  • 注册日期2006-01-29
  • 最后登录2021-06-25
  • 粉丝0
  • 关注1
  • 积分1047分
  • 威望535点
  • 贡献值1点
  • 好评度178点
  • 原创分0分
  • 专家分0分
  • 社区居民
15楼#
发布于:2007-06-04 14:03
总算大家开始感兴趣filespy拉
wengzuhong
驱动小牛
驱动小牛
  • 注册日期2004-07-16
  • 最后登录2014-10-22
  • 粉丝3
  • 关注1
  • 积分9分
  • 威望262点
  • 贡献值0点
  • 好评度219点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2007-06-04 14:23
原版的filespy能编译过
lsxredrain
驱动中牛
驱动中牛
  • 注册日期2006-08-31
  • 最后登录2008-10-18
  • 粉丝1
  • 关注0
  • 积分540分
  • 威望421点
  • 贡献值1点
  • 好评度420点
  • 原创分4分
  • 专家分0分
17楼#
发布于:2007-06-04 22:21
你把原版的包放一个上来,我比较一下wdk和ifs2k3sp1有什么差别?
longshentailang
驱动牛犊
驱动牛犊
  • 注册日期2005-12-06
  • 最后登录2008-03-24
  • 粉丝0
  • 关注0
  • 积分830分
  • 威望84点
  • 贡献值4点
  • 好评度83点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2007-06-04 22:49
学习
wengzuhong
驱动小牛
驱动小牛
  • 注册日期2004-07-16
  • 最后登录2014-10-22
  • 粉丝3
  • 关注1
  • 积分9分
  • 威望262点
  • 贡献值0点
  • 好评度219点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2007-06-05 14:49
已经解决,是与sp1不同
上一页
游客

返回顶部