微文件过滤驱动MiniFiliter:可用于监控文件所有相关的操作
这个驱动的创建和NT式的驱动不太一样,这个驱动创建好就是现成的框架代码,改改就能用了,很方便
环境:VS2019,Windows7 x64虚拟机
DriverEntry里设置的回调函数把要设置的内容剪切出来:
{ IRP_MJ_READ,
0,
FsFilter1PreOperation, // 这里是事前执行的回调,可以进行拦截操作
FsFilter1PostOperation }, // 这里是事后执行的回调,只能进行j
{ IRP_MJ_WRITE,
0,
FsFilter1PreOperation,
FsFilter1PostOperation },
进入FsFilter1PreOperation函数体内,最下面添加如下代码:
UCHAR MajorFunction = Data->Iopb->MajorFunction;
PFLT_FILE_NAME_INFORMATION lpNameInfo = NULL;
// 获取结构
status = FltGetFileNameInformation(Data, FLT_FILE_NAME_NORMALIZED | FLT_FILE_NAME_QUERY_DEFAULT, &lpNameInfo);
if (NT_SUCCESS(status)) {
// 解析结构
status = FltParseFileNameInformation(lpNameInfo);
if (NT_SUCCESS(status)) {
if (MajorFunction == IRP_MJ_READ) {
DbgPrint("[IRP_MJ_READ:%wZ]\r\n", lpNameInfo->Name);
}
if (MajorFunction == IRP_MJ_WRITE) {
DbgPrint("[IRP_MJ_WRITE:%wZ]\r\n", lpNameInfo->Name);
}
}
}
修改inf文件的Class和Class GUID,以及海拔,编译出来拖入Windows7右键inf文件安装
然后通过cmd进行加载以及停止驱动,命令:
sc start DriverName
sc stop DriverName
可以看到系统已经在刷日志了:
miniFiliter已经跑起来了