现在的位置: 首页 > 综合 > 正文

文件过滤系统驱动开发Filemon学习笔记

2013年05月26日 ⁄ 综合 ⁄ 共 1328字 ⁄ 字号 评论关闭

http://www.vckbase.com/index.php/wv/1495

WINDOWS文件过滤系统驱动开发,可用于硬盘还原,防病毒,文件安全防护,文件加密等诸多领域。而掌握核心层的理论及实践,对于成为一名优秀的开发人员不可或缺。

WINDOWS文件过滤系统驱动开发的两个经典例子,Filemon与SFilter,初学者在经过一定的理论积累后,对此两个例子代码的研究分析,会是步入驱动开发殿堂的重要一步,相信一定的理论积累以及贯穿剖析理解此两个例程后,就有能力开始进行文件过滤系统驱动开发的实际工作了。

对于SFilter例子的讲解,楚狂人的教程已经比较流行,而Filemon例子也许因框架结构相对明晰,易于剖析理解,无人贴出教程,本人在剖析Filemon的过程中积累的一些笔记料,陆续贴出希望对初学者有所帮助,并通过和大家的交流而互相提高。

Filemon学习笔记 第一篇:

Filemon的大致架构为,在此驱动程序中,创建了两类设备对象。

一类设备对象用于和Filemon对应的exe程序通信,以接收用户输入信息,比如挂接或监控哪个分区,是否要挂接,是否要监控,监控何种操作等。此设备对象只创建了一个,在驱动程序的入口函数DriverEntry中。此类设备对象一般称为控制设备对象,并有名字,以方便应用层与其通信操作。

第二类设备对象用于挂接到所须监控的分区,比如c:,d:或e:,f:,以便拦截到引应用层对该分区所执行的读,写等操作。此类设备对象为安全起见,一般不予命名,可根据须监控多少分区而创建一个或多个。

驱动入口函数大致如下:

001.NTSTATUS
002.DriverEntry(
003.IN
PDRIVER_OBJECT DriverObject,
004.IN
PUNICODE_STRING RegistryPath
005.)
006.{
007.NTSTATUS               
ntStatus;
008.PDEVICE_OBJECT         
guiDevice;
009.WCHAR                   deviceNameBuffer[] 
= L
"\\Device\\Filemon";
010.UNICODE_STRING         
deviceNameUnicodeString;
011.WCHAR                   deviceLinkBuffer[] 
= L
"\\DosDevices\\Filemon";
012.UNICODE_STRING         
deviceLinkUnicodeString;
013.ULONG                   i;
014. 
015.DbgPrint
((
"Filemon.SYS:
entering DriverEntry\n"
));
016.FilemonDriver
= DriverObject;
017. 
018.//   
019.//
Setup the device name
020.//   
021.RtlInitUnicodeString
(&deviceNameUnicodeString,
022.deviceNameBuffer
);
023. 

抱歉!评论已关闭.