它的通信原理主要涉及以下几个方面: 1.注册和加载:Minifilter首先需要在系统中注册并加载,以便在文件系统层面进行拦截和处理。注册时,Minifilter需要提供一个唯一的名称,并指定它要监控的文件系统类型。 2.过滤器函数:Minifilter通过实现一系列的过滤器函数来拦截和处理文件操作。这些过滤器函数包括预创建、创建、打开、...
FilterConnectCommunicationPort打开一个新的通信服务器端口的连接。该微端口在驱动中创建。 端口名类似L"\\MyFilterPort" 应用程序通过返回的端口句柄与minifilter通信。 2. 发送数据 FilterSendMessage发送message给内核minifilter message发送到minifilter的消息通知回调函数中,在这里处理消息。 这些回调函数在内核创建通信端...
一、建立通信端口 在DriverEntry函数里创建一个安全性叙述子。 函数FltBuildDefaultSecurityDescriptor是用来申请一个安全叙述子(简单点就是给使用通信端口的用户申请个权限,这里可以看到申请的权限是FLT_PORT_ALL_ACCESS,意思就是:用户层的程序连接到设置了这个权限级别的通信端口后,可以获得所有操作权限)。函数InitializeOb...
应用程序通过返回的端口句柄与minifilter通信。 发送数据 FilterSendMessage 发送message给内核minifilter message发送到minifilter的消息通知回调函数中,在这里处理消息。 这些回调函数在内核创建通信端口时指定 MessageNotifyCallback。 该操作是同步的。调用者处于等待状态,直到消息被传递并收到minifilter的replay。 当然如果希望...
minifilter 与用户态的通信 驱动层的步骤 1. 创建通信端口 FltCreateCommunicationPort 对于安全对象,必须设置OBJ_KERNEL_HANDLE。 ServerPort 监听客户端连接请求的端口。 第三个参数ObjectAttributes 通过InitializeObjectAttributes初始化,其中包含了端口名称。方便应用层打开。 ConnectNotifyCallback 用户态连接回调,这里对...
一、建立通信端口 在DriverEntry函数里创建一个安全性叙述子。 函数FltBuildDefaultSecurityDescriptor是用来申请一个安全叙述子(简单点就是给使用通信端口的用户申请个权限,这里可以看到申请的权限是FLT_PORT_ALL_ACCESS,意思就是:用户层的程序连接到设置了这个权限级别的通信端口后,可以获得所有操作权限)。函数InitializeOb...
miniFilter 内核层与应用程序通信 重点说下FltSendMessage() FilterGetMessage() 和 FilterReplyMessage() 这三个函数 首先:内核层的结构体 1 2 3 4 5 6 7 8 9 10 11 // Defines the commands between the utility and the filter typedefenum_NPMINI_COMMAND {...
一、建立通信端口 在DriverEntry函数里创建一个安全性叙述子。 函数FltBuildDefaultSecurityDescriptor是用来申请一个安全叙述子(简单点就是给使用通信端口的用户申请个权限,这里可以看到申请的权限是FLT_PORT_ALL_ACCESS,意思就是:用户层的程序连接到设置了这个权限级别的通信端口后,可以获得所有操作权限)。函数InitializeOb...