Filemon框架结构.pdf
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
Filemon是一款用于监控文件系统活动的工具,它的框架结构分为上层应用程序(FileMon.exe)和内核驱动程序(FileMon.sys)。FileMon的核心功能在于能够捕获并记录对特定卷(如C:盘)的文件操作,以便进行分析和调试。下面是Filemon框架结构的详细说明: 1. **原理分析**: - **启动过程**:当FileMon启动时,其内核驱动程序`FileMon.sys`的`DriverEntry`函数会创建设备和符号连接。设备的创建通过`IoCreateDevice`函数实现,这使得上层应用程序(FileMon.exe)能够向驱动发送IO请求。 - **IO请求分发**:FileMon使用一系列分发函数,如`IRP_MJ_READ`、`IRP_MJ_CREATE`等,来处理不同的IO操作。 - **卷设备监控**:FileMon通过为每个卷生成一个设备hook(hookDevice),然后使用`IoAttachDeviceByPointer`将hookDevice挂载到卷设备上。这样一来,针对卷的所有IO请求都会先经过hookDevice处理,达到监控的目的。 2. **派遣函数和处理函数**: - **FilemonDispatch**:这是默认的处理函数,它根据设备类型决定是交由`FilemonDeviceRoutine`处理用户交互设备,还是调用`FilemonHookRoutine`处理系统设备。 - **FilemonUnload**:这是卸载例程,负责卸载FileMon驱动。 - **FilemonDeviceRoutine**:主要处理通信设备的IRP,最终调用`FilemonFastIoDeviceControl`来处理不同类型的控制代码。 - **FilemonFastIoDeviceControl**:这个函数处理各种IOCTL控制代码,例如设置监控驱动器、挂载/卸载特殊文件系统、开始/停止信息过滤等。 - **FilemonHookRoutine**:系统设备的IRP处理函数,记录IRP信息,并设置完成例程,然后将请求传递给原始设备处理。 - **FilemonHookDone**:作为FilemonHookRoutine的完成例程,负责记录操作的完成状态,无法在Dispatch级别记录时,会创建工作任务并在`FilemonHookDoneWork`中完成记录。 3. **数据结构与模块**: - **记录链**:由`LogMutex`控制同步,用于存储和管理监控记录。包括`FilemonAllocateLog`(分配记录空间)、`FilemonFreeLog`(释放记录)、`FilemonGetOldestLog`(获取最旧记录)、`FilemonResetLog`(重置记录链)以及`LogRecord`(记录数据)等功能。 - **哈希表链**:由`HashResource`控制同步,用于快速查找文件路径。每个文件指针对应一个`Hash_Entry`,在文件关闭时释放。 - **过滤模块**:允许用户设置过滤条件。包括`FilemonFreeFilters`(释放过滤链资源)等函数。 4. **特殊操作处理**: - **删除文件**:通过`IRP_MJ_SET_INFORMATION`操作处理文件删除。 - **打开文件**:使用`IRP_MJ_CREATE`来监控文件的打开操作。 Filemon通过内核驱动程序在系统层面进行文件操作的监控,利用设备hook和IRP的拦截,配合记录链和哈希表的数据结构,实现了高效、详尽的文件活动跟踪。同时,其过滤模块允许用户自定义监控条件,提高了实用性。通过这些机制,Filemon成为了数据库等IT领域进行系统行为分析和问题排查的重要工具。
- 粉丝: 62
- 资源: 7万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助