阅读:7368回复:42
第二次更新(下载不要积分啦!!)filemon学习笔记,绝对原创.
(为了纪念今天比较彻底的看懂了Filemon,下载就不有积分啦。贡献给大家。)
学习文件过滤驱动一个多月来的一点笔记.给大家分享一下.觉得filemon还是比较好理解,只是有很多地方没有怎么看过文件系统的知识,所以有的地方写不出来为什么. 要点积分,希望大家不要见怪........ 更新:对于文件的删除,应该是IRP_MJ_SETINFORMATION中的"FileDispositionInformation", 而对于文件的重命名:则是:“FileRenameInformation”今天仔细看了一下关于文件路径的获取的那一段。 // Ask the file system for the name of the file, which its required to be // able to provide for the Win32 filename query function. We could use the // undocumented , but then we'd have to worry about // re-entrancy issues, since that call generates the IRP that we create // manually here. Since we send the IRP to the FSD below us, we don't need // to worry about seeing the IRP in our dispatch entry point. This can fail // in some cases, so we fall back on constructing the name ourselves if // we have to. 这个说明filmon本来考虑过用未公开化的函数 ObQueryNameString( )来得到文件的路径,但是由于可能会导致死锁。 还有就是会可能有重入的危险,因此是使用的我们常看到的自建IRP来查寻文件信息(IRP_MJ_QUERY_INFORMATION) 来查寻文件信息,这个处理方法是比较好的。不过我发现它的处理中是把IRP_MJ_CREATE**排除在外的。这一点没有想 明白是怎么要这么做。在IRP_MJ_CREATE的IRP时候,会直接从fileobject中得到文件路径,这一点我认为不是很准确。希望 大家说一下自己的看法 另附上我的注释版的Filemon的源文件。认为有帮助下了就回一下贴吧。这次就免费献给大家了。 |
|
|
沙发#
发布于:2010-01-08 09:31
回 9楼(xjyoung) 的帖子
要先回复哈.才来驱网.不是很会弄. |
|
板凳#
发布于:2010-05-11 16:51
回 24楼(tonghai523) 的帖子
这只是通读代码后的一点想法。很多都没有写,再者当时自己也不是很明白。也只能这样了。 |
|
地板#
发布于:2010-05-11 16:53
回 27楼(foreverys) 的帖子
我想是的一一对应的。在create成功后会记录下这一个fileobject而在cleanup close中会在相应的链表中给释放掉。 |
|