阅读:1781回复:11
如何去做一个文件过滤驱动
刚开始在一个小公司上班,老板说开发一个文件过滤加密的东西
自己的思路就是irp和fastio的处理(因为以前仅仅是了解一些,我的认识也就仅仅限于这个层次了),但是最后老板说最困难的地方在于缓存的处理部分 所以自己最后也不是很明白.想请高手讲解下总体的框架.先谢谢了! 附: 我个人认为: 文件过滤有以下流程 设计(不多说了任何软件都有需求分析,项目设计,用户群分析等) 编程: 创建设备, 绑定设备(有人说一个设备只能绑定一个盘,我认为这是不对的.只是我还不知道怎么实现绑定多个) 截获irp请求或者fastio请求 分发例程的设定和编写.(这是传说中的重点) 动态卸载驱动(好象一个unload就可以实现) 认识就这么多了 第一次在这里发东西,希望能通过这里的学习取得进步! 希望可以得到一些高手的指点,并超越你们! |
|
沙发#
发布于:2008-07-14 11:54
(1)理解sfilter的运行原理
(2)理解filemon的运行原理 (3)理解devia文件加密的简单的sample的原理 (4)阅读fat32的文件系统的源代码 (5)阅读nt源代码中的ntfs源代码 (6)阅读ifs的文件系统目录下的所有pdf (7)阅读ZnSoft翻译的《文件系统内幕》 (8)阅读驱动开发网上的文件系统相关的所有帖子 (9)阅读OSr的所有文件系统相关的帖子。 (10)编写自己的filemon,监视并打印指定文件的所有访问。(不要用网络上的filemon,这个版本只具备参考价值,里面会漏掉许多文件IO) (11)使用前面编写的filemon分析现在已经比较成熟的文件头加密和文件尾加密的的核心技术 (12)使用IDA配合前面的分析,获得加密技术的核心代码。 (13)编写文件过滤驱动透明加密的DEMO (14)分解文件过滤驱动透明加密的DEMO,根据开发难度和调试难度,将整个驱动分解到一个开发小组内做并行开发。 (15)对各个模块做白盒测试 (16)建立TD,安排测试小组的测试工作,对整个驱动做黑盒测试 (17)与AP的接口对接,根据AP表现的效果对驱动的功能进行调整。 (18)建立微软的驱动认证环境,使用WHQL对驱动做最终测试,就可以发布了。 呵呵。 做到最后,就会感觉到最痛苦的是对window的内核的运行机制的理解! 驱动代码本身的稳定性通过编程规范和大量测试就可以保证,但对window的CACHE管理器的理解和对虚拟内存管理器的理解以及对文件系统的理解的深度,却是影响驱动最终稳定性的最大的问题。 |
|
|
板凳#
发布于:2008-07-11 20:34
哇哈哈 又找到一个初学者
不过看到你提出的问题,发现你还没有仔细看完楚狂人前辈的教程哦 仔细读,反复读,边读边看代码 据说minifilter框架更easy,可以研究下 |
|
地板#
发布于:2008-07-11 16:22
看filemon、filespy、filedisk、sfilter的代码
|
|
地下室#
发布于:2008-07-11 15:34
刚走上这条路,坚持,坚持,再坚持!
|
|
5楼#
发布于:2008-06-20 10:13
谢谢
自己已经学习这个半月了,了解一些基本的东西了.相信自己会在这条路上走下去!谢谢microbe!谢谢你! |
|
6楼#
发布于:2008-06-18 11:39
你好歹还有传承,像我这种,就只有从0开始了。
一年以前,我连文件系统过滤器这个概念都搞不清楚,导师的一句指示就让我踏入这个禁地。life not easy。如果你真的想吃这碗饭,就要自己去再走一遍别人走过无数遍的路,现在能有这样一个网站做交流已经非常不错了,楚狂人的教程还有N多大牛的热心回答,可以使我们少走很多弯路,但是他们也不能帮我们走这路啊! 退后一万步讲,纸上得来终觉浅,绝知此事要躬行!前期的功夫没有做足,后期真的是举步维艰!你能够从坛子里下一个框架,能够得到一份搞定了简单过滤器的源代码,但是后续的问题你仍然是要自己解决的啊,而且没有前期的积累,后期的工作会花费你不可想象的大量时间。 znsoft老大的话确实没有错,等你做完回头看,你就发现znsoft老大所言不虚了。反正到现在为止,我已经切实体会到做这个东西不是闹着玩儿的,不是像做应用程序,有个demo就至尊无敌了,直接copy过来改改就用。程序不大,但是凝聚着心血(我想这也许是前辈不愿意让你太容易就得到的原因)。从微软的src看起,不懂的就到坛子里问,多动手自己调试,自己实践。至少像我这种人,只要知道一点,还是会很愿意回答的。大家都是,我记得的就有很多坛子里的大牛回复我最初很easy的问题。你说到的流程和框架,可能你自己实现方法的不同就会有不同的搞法,我自己觉得,呵呵,你也可以下别人的测试版,看看别人是怎么搞的! 一味的牢骚不能给你太多的帮助,冷静下来好好想清楚,想好了就去做,有付出必有收获,呵呵! 我也是有感而发,多说了几句,兄弟不要介意啊! ![]() |
|
7楼#
发布于:2008-06-16 08:57
本想走个捷径,找个高手告诉自己有什么框架和特别需要注意的点的.但是现在看来
znsoft都动用"多动手,都看书,多理解"这样的固定式真理回答了.只能自己多做一些, 评价认为是否是缺乏知识传承体系,良好的知识传承体系是什么,是一本本好的教材的引进吗?是某些知识的书写形成类似楚狂人大侠的那种资料吗?还是形成一个即便是门外汉也可以理解深层的指示性,讲解性的总体框架结构的东西? 公司应该说三年前就开始这个东西了,肯定历代的前辈们积累了许多知识,但是那不是公司的,人走了知识就走了,而我们新来的只有从原始的<深入解析windows操作系统><文件系统内幕开发者指南>这样的东西开始(幸好不是自己去研究反汇编反编译内核),周末的时候想的最多的不是我项目中有多少知识点,而是想我如果成功了怎么保存自己的知识在公司! 我想网站也是一样的,确实有一些很高很高的高手明白这些不过是一些简单的流程,但是对于我--一个新手而言,真的有点迷茫,我想更重要的是我有一个半懂不懂的老板认为这个东西很简单(虽然他不曾开发).所以他限制的时间就很有限.而这个时间外加我不可能在这个时间内通过现有的资料进行有效的开发而促使我最终不能继续在这个行业发展. 很喜欢这个行业而且我相信时间略微长一些或者自己以前有些接触的话 我可以在许久以后精通这些,但是我也需要机会. 可能今天分析问题的思路有点"主观不努力,客观找原因"了.但是我想一个没有健全知识传承的公司不是好公司,一个没有健全知识传承体系的行业不是好行业,一个没有健全知识传承体系的网站不是一个好网站. 上面的是自己的一点感想,我愿意为上面的话负责.更愿意自己可以留在这个行业(因为真的有好多乐趣) |
|
8楼#
发布于:2008-06-14 18:14
运气再好,抵不过基础好,多看书,多理解,多上手
|
|
|
9楼#
发布于:2008-06-14 17:52
做驱动的时候 GOOD LUCK 是多么的重要啊,每次必提
|
|
|
10楼#
发布于:2008-06-14 15:21
Life not easy,Wish you good luck;
![]() |
|
11楼#
发布于:2008-06-14 14:50
Ding
It's not so easy. You must know the Window Kernel. |
|
|