阅读:2109回复:12
IFS SFilter问题
我跟踪了代码,却发现虽然执行IRP_MJ_FILE_SYSTEM, IRP_MN_MOUNT_VOLUME,但是似乎最后没有ATTACHed上新创建的volume,从DeviceTree中看出来的。
有哪位大哥对这个熟悉的,帮忙呀。这条路径在什么情况下执行? 似乎UNMOUNT时也从这里走呀。 |
|
最新喜欢:![]()
|
沙发#
发布于:2002-05-01 11:50
前两天我也研究了这个驱动程序,现在不准备使用这个驱动程序了!这个驱动程序有ATTACH到其他的设备对象上面啊!不知道你是怎么看的
|
|
板凳#
发布于:2002-05-01 21:40
这是个通用程序. 如果你只想ATTACH到指定的文件系统上, 修改一些东西就可以.主要是DRIVERENTRY
如果你写成这样: RtlInitUnicodeString( &nameString, L\"\\\\Cdfs\" ); status = IoGetDeviceObjectPointer( &nameString, FILE_READ_ATTRIBUTES, &fileObject, &rawDeviceObject ); 那么你将只受到CDFS,UDF的请求. 如果你写成, FASTFAT, 或者NTFS, 同样. ATTACH到RAW上, 确实HOOK了所有的文件系统, 应用性不大(自动清毒软件一般这么做). |
|
地板#
发布于:2002-05-03 21:45
楼上兄弟,我实际上是希望要的功能是,当一个volume生成时能监控到,不管它是什么文件系统。
帮我详细说说吧, |
|
|
地下室#
发布于:2002-05-04 19:56
把你要做的事情讲一下.
SFILTER可以监控到所有的VOLUMN的. 只是他判断不应该自己处理,立即UNATTACH了而已. 仔细读读SFILTER, 加上必要的DBGPRINT, 你会发现这一点. DeviceTree的更新不及时, 和HANDLE一类的SOFT相同.不能完全相信. |
|
5楼#
发布于:2002-05-08 13:10
>>只是他判断不应该自己处理,立即UNATTACH了而已
真的吗,我似乎看不出来? 所有的volume,不管如何生成的volume?比如有一个文件生成的虚拟的盘,但是我在softice中设断点,有的就没办法截获到。 |
|
|
6楼#
发布于:2002-05-08 14:49
关于UNTATCH的事情,我弄错了, 我参考的是我改过的代码.
-------- 所有的volume,不管如何生成的volume?比如有一个文件生成的虚拟的盘,但是我在softice中设断点,有的就没办法截获到。 -------- 没有进行过任何修正的SFILTER只认识 RAW上的文件系统形式. 详细说一下你的虚拟是什么. DISK?CDROM?DVD? MOUNT成功之后是什么文件系统? 我最近抽不出多少时间, 如果有具体的情报, 周末可以查查看.其实最简单的处理方法就是随便UNASMBLE一个通用的ANTI VIRUS SOFT.看看那东西出使化的时候调用了多少次SfFsNotification, 以及参数是如何初试化的. :P :D |
|
7楼#
发布于:2002-05-08 16:45
zhe,你好,我现在就是希望在一个特定的volume在mount上来时截获,并且做attach上它,这样做相应加解密工作。这个volume是自己写的程序(有点像PGP)生成的,但是用sfilter发现只有在新的一个文件被创建成volume时,即没有格式化的时候会接到通知,但是当这个盘格式化了后在打开的时候,就没戏了。
我这个情况如何解决? 对了 Raw 这个东东具体指那些? 能看看你的代码吗? |
|
|
8楼#
发布于:2002-05-09 01:33
这是个通用程序. 如果你只想ATTACH到指定的文件系统上, 修改一些东西就可以.主要是DRIVERENTRY 再看看上面的东西, 简直就是象在说梦话. 脑子不清楚的时候不知写了些什么东西. :mad: :cool: Raw是DRIVER的名字. 你在SOFTICE下看一下 DRIVER RAW 和DEVICE \\DEVICE\\RAWDISK就知道了. IFS里带的SFILTER把自己注册成FILE_DEVICE_DISK_FILE_SYSTEM, 并且只和\\DEVICE\\RAWDISK进行了连接. (DRIVEENTRY的最后几句) 在MOUNT来的时候,他也只处理FILE_DEVICE_DISK_FILE_SYSTEM这种形式. 我问你[MOUNT成功之后是什么文件系统? ]你没有回答我. 就象SFILTER这个东西不修正不能HOOK CDFS,UDF一样, 如果你成功MOUNT后的文件系统不是FAT, NTFS(FILE_DEVICE_DISK_FILE_SYSTEM)的话,他不能对你起什么作用. 我没有分析过PGP DISK,不过记得LU0有个贴子说那玩意很牛, 自己实现了FAT. 如果你是从那东西改起的, 大约这个现成的SFILTER很难对你有什么作用.除非你彻底搞清PGP FAT的设备类型并且肯花时间改SFILTER. MS公开了SFILTER,但是似乎有些保留, 不象FILEMON那么容易改. 因为是BOOT时启动的,改的时候小心些. [但是用sfilter发现只有在新的一个文件被创建成volume时,即没有格式化的时候会接到通知,但是当这个盘格式化了后在打开的时候,就没戏了。] 根据你的现象,用的不太象FAT.如果你可以给我一份确实可以安装,执行的副本, 我可以抽空帮你看一下. 只要能确认他的文件系统形式, SFILTER还是相对容易的. 顺便问一下,确实是自己从头写的吗? 如果从某个版本的FILEDISK改的, 就不必了.如果是从PGPDISK改起的, 那你把编译好的东西放一份.从头干不现实的. [编辑 - 5/9/02 作者: zdhe] |
|
9楼#
发布于:2002-05-09 12:01
我做测试时用的时filedisk的程序,原先的那个像pgp我也不懂。
实际上我现在要的就是截获mount/umount的操作然后做记录而已 非常谢谢。对了,在Unmount路径时具体流程是如何呢? 好像就是发了几个 IRP_MJ_FILE_SYSTEM IRP_MN_USER_FS_REQUEST 我的email是achen@koal.com。 希望有机会向你请教请教。 |
|
|
10楼#
发布于:2002-05-10 00:29
我从http://www.acc.umu.se/~bosse/下了一个最新的FILEDISK简单的测试了一下.
无论是没有FORMAT还是FORMAT成FAT, FAT32, NTFS都可以看到MOUNT时的动作(确实SFILTER做出来的DEVICE OBJECT 被成功的ATTACH了). 你是不是改SFILTER改出的问题.或者FILEDISK版本上的原因?也许是改出来的错误. 具体UNMOUNT的控制, 比较容易处理. 你在SFILTER的IRP_MJ_DEVICE_CONTROL里监视IOCTL_FILE_DISK_CLOSE_FILE就可以了.等待他的结束, 看RETURN结果, 如果NT_SUCCESS(NTSTAUS), 不就是UNMOUNT成功吗,否则你可以放过这次UNMOUNT记录. 下面的输出是NTFS情况下的MOUNT动作. 之所以失败多次最后成功估计是FS REC在便历所有注册过了的文件系统形式.而那些无名(UNKNOWN)的DEVICE OBJEC是文件系统为了识别而产生的临时DEVICE OBJECT. 你加一下LOG就可以明确了. 00000000 0.00000000 --------------------ZDHE MESSAGE BEGIN----------------- 00000001 0.00011314 IRP_MN_MOUNT_VOLUME comes 00000002 0.00017684 DeviceObject Type=0x3,DeviceType=0x8,DriverName=\\FileSystem\\Sfilter, 00000003 0.00018019 00000004 0.00025981 Device Object Name (Unknown) 00000005 0.00030926 --------------------MESSAGE END----------------- 00000006 0.00040480 --------------------ZDHE MESSAGE BEGIN----------------- 00000007 0.00047269 IRP_MN_MOUNT_VOLUME comes, Real Device Object Info 00000008 0.00054476 DeviceObject Type=0x3,DeviceType=0x7,DriverName=\\Driver\\FileDisk, 00000009 0.00054895 00000010 0.00066461 Device Object Name (\\Device\\FileDisk\\FileDisk1) 00000011 0.00072914 --------------------MESSAGE END----------------- 00000012 0.00084229 --------------------ZDHE MESSAGE BEGIN----------------- 00000013 0.00090514 SfMountCompletion : fail 00000014 0.00096130 DeviceObject Type=0x3,DeviceType=0x8,DriverName=\\FileSystem\\Sfilter, 00000015 0.00096465 00000016 0.00103672 Device Object Name (Unknown) 00000017 0.00108450 --------------------MESSAGE END----------------- 00000018 0.00139710 --------------------ZDHE MESSAGE BEGIN----------------- 00000019 0.00147253 IRP_MN_MOUNT_VOLUME comes 00000020 0.00153120 DeviceObject Type=0x3,DeviceType=0x8,DriverName=\\FileSystem\\Sfilter, 00000021 0.00153539 00000022 0.00160998 Device Object Name (Unknown) 00000023 0.00166027 --------------------MESSAGE END----------------- 00000024 0.00174575 --------------------ZDHE MESSAGE BEGIN----------------- 00000025 0.00181280 IRP_MN_MOUNT_VOLUME comes, Real Device Object Info 00000026 0.00188571 DeviceObject Type=0x3,DeviceType=0x7,DriverName=\\Driver\\FileDisk, 00000027 0.00188990 00000028 0.00196869 Device Object Name (\\Device\\FileDisk\\FileDisk1) 00000029 0.00202987 --------------------MESSAGE END----------------- 00000030 0.00213128 --------------------ZDHE MESSAGE BEGIN----------------- 00000031 0.00219413 SfMountCompletion : fail 00000032 0.00224945 DeviceObject Type=0x3,DeviceType=0x8,DriverName=\\FileSystem\\Sfilter, 00000033 0.00225280 00000034 0.00251512 Device Object Name (Unknown) 00000035 0.00257882 --------------------MESSAGE END----------------- 00000036 0.00495733 --------------------ZDHE MESSAGE BEGIN----------------- 00000037 0.00505707 IRP_MN_MOUNT_VOLUME comes 00000038 0.00511992 DeviceObject Type=0x3,DeviceType=0x8,DriverName=\\FileSystem\\Sfilter, 00000039 0.00512411 00000040 0.00520206 Device Object Name (Unknown) 00000041 0.00525234 --------------------MESSAGE END----------------- 00000042 0.00534705 --------------------ZDHE MESSAGE BEGIN----------------- 00000043 0.00541577 IRP_MN_MOUNT_VOLUME comes, Real Device Object Info 00000044 0.00548785 DeviceObject Type=0x3,DeviceType=0x7,DriverName=\\Driver\\FileDisk, 00000045 0.00549204 00000046 0.00557166 Device Object Name (\\Device\\FileDisk\\FileDisk1) 00000047 0.00566049 --------------------MESSAGE END----------------- 00000048 0.00577950 --------------------ZDHE MESSAGE BEGIN----------------- 00000049 0.00584152 SfMountCompletion : fail 00000050 0.00589768 DeviceObject Type=0x3,DeviceType=0x8,DriverName=\\FileSystem\\Sfilter, 00000051 0.00590187 00000052 0.00597310 Device Object Name (Unknown) 00000053 0.00602171 --------------------MESSAGE END----------------- 00000054 0.00951238 --------------------ZDHE MESSAGE BEGIN----------------- 00000055 0.00962468 IRP_MN_MOUNT_VOLUME comes 00000056 0.00968838 DeviceObject Type=0x3,DeviceType=0x8,DriverName=\\FileSystem\\Sfilter, 00000057 0.00969173 00000058 0.00977219 Device Object Name (Unknown) 00000059 0.00982164 --------------------MESSAGE END----------------- 00000060 0.00992221 --------------------ZDHE MESSAGE BEGIN----------------- 00000061 0.00999093 IRP_MN_MOUNT_VOLUME comes, Real Device Object Info 00000062 0.01006301 DeviceObject Type=0x3,DeviceType=0x7,DriverName=\\Driver\\FileDisk, 00000063 0.01006720 00000064 0.01015017 Device Object Name (\\Device\\FileDisk\\FileDisk1) 00000065 0.01021219 --------------------MESSAGE END----------------- 00000066 0.01030773 --------------------ZDHE MESSAGE BEGIN----------------- 00000067 0.01036975 SfMountCompletion : fail 00000068 0.01042590 DeviceObject Type=0x3,DeviceType=0x8,DriverName=\\FileSystem\\Sfilter, 00000069 0.01043009 00000070 0.01050133 Device Object Name (Unknown) 00000071 0.01054910 --------------------MESSAGE END----------------- 00000072 0.01065806 --------------------ZDHE MESSAGE BEGIN----------------- 00000073 0.01072175 IRP_MN_MOUNT_VOLUME comes 00000074 0.01077707 DeviceObject Type=0x3,DeviceType=0x8,DriverName=\\FileSystem\\Sfilter, 00000075 0.01078126 00000076 0.01085333 Device Object Name (Unknown) 00000077 0.01090110 --------------------MESSAGE END----------------- 00000078 0.01098240 --------------------ZDHE MESSAGE BEGIN----------------- 00000079 0.01104945 IRP_MN_MOUNT_VOLUME comes, Real Device Object Info 00000080 0.01112152 DeviceObject Type=0x3,DeviceType=0x7,DriverName=\\Driver\\FileDisk, 00000081 0.01112487 00000082 0.01120533 Device Object Name (\\Device\\FileDisk\\FileDisk1) 00000083 0.01126651 --------------------MESSAGE END----------------- 00000084 0.01134110 --------------------ZDHE MESSAGE BEGIN----------------- 00000085 0.01140145 SfMountCompletion : fail 00000086 0.01145760 DeviceObject Type=0x3,DeviceType=0x8,DriverName=\\FileSystem\\Sfilter, 00000087 0.01146095 00000088 0.01153219 Device Object Name (Unknown) 00000089 0.01157912 --------------------MESSAGE END----------------- 00000090 0.01165036 --------------------ZDHE MESSAGE BEGIN----------------- 00000091 0.01171070 IRP_MN_MOUNT_VOLUME comes 00000092 0.01176602 DeviceObject Type=0x3,DeviceType=0x8,DriverName=\\FileSystem\\Sfilter, 00000093 0.01177021 00000094 0.01184228 Device Object Name (Unknown) 00000095 0.01188922 --------------------MESSAGE END----------------- 00000096 0.01196716 --------------------ZDHE MESSAGE BEGIN----------------- 00000097 0.01203421 IRP_MN_MOUNT_VOLUME comes, Real Device Object Info 00000098 0.01210545 DeviceObject Type=0x3,DeviceType=0x7,DriverName=\\Driver\\FileDisk, 00000099 0.01210964 00000100 0.01218926 Device Object Name (\\Device\\FileDisk\\FileDisk1) 00000101 0.01225127 --------------------MESSAGE END----------------- 00000102 0.01288655 --------------------ZDHE MESSAGE BEGIN----------------- 00000103 0.01297958 SfMountCompletion : fail 00000104 0.01304160 DeviceObject Type=0x3,DeviceType=0x8,DriverName=\\FileSystem\\Sfilter, 00000105 0.01304579 00000106 0.01315306 Device Object Name (Unknown) 00000107 0.01320419 --------------------MESSAGE END----------------- 00000108 0.01329638 --------------------ZDHE MESSAGE BEGIN----------------- 00000109 0.01336175 IRP_MN_MOUNT_VOLUME comes 00000110 0.01341958 DeviceObject Type=0x3,DeviceType=0x8,DriverName=\\FileSystem\\Sfilter, 00000111 0.01342377 00000112 0.01349585 Device Object Name (Unknown) 00000113 0.01354529 --------------------MESSAGE END----------------- 00000114 0.01363497 --------------------ZDHE MESSAGE BEGIN----------------- 00000115 0.01370286 IRP_MN_MOUNT_VOLUME comes, Real Device Object Info 00000116 0.01377409 DeviceObject Type=0x3,DeviceType=0x7,DriverName=\\Driver\\FileDisk, 00000117 0.01377828 00000118 0.01386042 Device Object Name (\\Device\\FileDisk\\FileDisk1) 00000119 0.01392244 --------------------MESSAGE END----------------- 00000120 0.01403977 --------------------ZDHE MESSAGE BEGIN----------------- 00000121 0.01410765 SfMountCompletion : success 00000122 0.01416632 DeviceObject Type=0x3,DeviceType=0x8,DriverName=\\FileSystem\\Sfilter, 00000123 0.01416967 00000124 0.01424343 Device Object Name (Unknown) 00000125 0.01429204 --------------------MESSAGE END----------------- 00000126 2.03940639 --------------------ZDHE MESSAGE BEGIN----------------- 00000127 2.03951954 IRP_MN_MOUNT_VOLUME comes 00000128 2.03958239 DeviceObject Type=0x3,DeviceType=0x8,DriverName=\\FileSystem\\Sfilter, 00000129 2.03958742 00000130 2.03966704 Device Object Name (Unknown) 00000131 2.03971649 --------------------MESSAGE END----------------- 00000132 2.03980868 --------------------ZDHE MESSAGE BEGIN----------------- 00000133 2.03987740 IRP_MN_MOUNT_VOLUME comes, Real Device Object Info 00000134 2.03994948 DeviceObject Type=0x3,DeviceType=0x7,DriverName=\\Driver\\FileDisk, 00000135 2.03995367 00000136 2.04003497 Device Object Name (\\Device\\FileDisk\\FileDisk1) 00000137 2.04009698 --------------------MESSAGE END----------------- 00000138 2.04595778 --------------------ZDHE MESSAGE BEGIN----------------- 00000139 2.04606674 SfMountCompletion : fail 00000140 2.04612875 DeviceObject Type=0x3,DeviceType=0x8,DriverName=\\FileSystem\\Sfilter, 00000141 2.04613378 00000142 2.04621508 Device Object Name (Unknown) 00000143 2.04628967 --------------------MESSAGE END----------------- 00000144 2.04637264 --------------------ZDHE MESSAGE BEGIN----------------- 00000145 2.04643382 IRP_MN_MOUNT_VOLUME comes 00000146 2.04649081 DeviceObject Type=0x3,DeviceType=0x8,DriverName=\\FileSystem\\Sfilter, 00000147 2.04649500 00000148 2.04656624 Device Object Name (Unknown) 00000149 2.04661401 --------------------MESSAGE END----------------- 00000150 2.04672213 --------------------ZDHE MESSAGE BEGIN----------------- 00000151 2.04678917 IRP_MN_MOUNT_VOLUME comes, Real Device Object Info 00000152 2.04686209 DeviceObject Type=0x3,DeviceType=0x7,DriverName=\\Driver\\FileDisk, 00000153 2.04686544 00000154 2.04694925 Device Object Name (\\Device\\FileDisk\\FileDisk1) 00000155 2.04700959 --------------------MESSAGE END----------------- 00000156 2.04765493 --------------------ZDHE MESSAGE BEGIN----------------- 00000157 2.04773119 SfMountCompletion : fail 00000158 2.04779070 DeviceObject Type=0x3,DeviceType=0x8,DriverName=\\FileSystem\\Sfilter, 00000159 2.04779656 00000160 2.04789797 Device Object Name (Unknown) 00000161 2.04794742 --------------------MESSAGE END----------------- 00000162 2.04802704 --------------------ZDHE MESSAGE BEGIN----------------- 00000163 2.04808738 IRP_MN_MOUNT_VOLUME comes 00000164 2.04814354 DeviceObject Type=0x3,DeviceType=0x8,DriverName=\\FileSystem\\Sfilter, 00000165 2.04814689 00000166 2.04821813 Device Object Name (Unknown) 00000167 2.04826506 --------------------MESSAGE END----------------- 00000168 2.04835474 --------------------ZDHE MESSAGE BEGIN----------------- 00000169 2.04842178 IRP_MN_MOUNT_VOLUME comes, Real Device Object Info 00000170 2.04849470 DeviceObject Type=0x3,DeviceType=0x7,DriverName=\\Driver\\FileDisk, 00000171 2.04849889 00000172 2.04857934 Device Object Name (\\Device\\FileDisk\\FileDisk1) 00000173 2.04863969 --------------------MESSAGE END----------------- 00000174 2.11468661 FileDisk: Unknown IoControlCode 0x66001b 00000175 2.13116691 --------------------ZDHE MESSAGE BEGIN----------------- 00000176 2.13128425 SfMountCompletion : success 00000177 2.13134878 DeviceObject Type=0x3,DeviceType=0x8,DriverName=\\FileSystem\\Sfilter, 00000178 2.13135297 00000179 2.13143678 Device Object Name (Unknown) 00000180 2.13148623 --------------------MESSAGE END----------------- |
|
11楼#
发布于:2002-05-11 19:48
IOCTL_FILE_DISK_CLOSE_FILE 哪里来的,值多少?
|
|
|
12楼#
发布于:2002-05-11 20:29
filedisk /umount X: 时发的IOCODE.
你看FISKDISK的RING3 控制SOURCE就知道。RING0是KMD DRIVER,系统负担的事情很少。 |
|