Minifilter 项目使用教程
Minifilter 参考《Windows内核安全与驱动开发》的透明加密解密Minifilter 项目地址: https://gitcode.com/gh_mirrors/mi/Minifilter
1. 项目目录结构及介绍
Minifilter/
├── src/
│ ├── main.c
│ ├── utils.c
│ └── config.h
├── include/
│ ├── utils.h
│ └── config.h
├── docs/
│ └── README.md
├── Makefile
└── README.md
目录结构说明
-
src/: 包含项目的源代码文件。
main.c
: 项目的入口文件,负责初始化和启动 Minifilter。utils.c
: 包含一些通用的工具函数。config.h
: 配置文件的头文件,定义了一些常量和配置项。
-
include/: 包含项目的头文件。
utils.h
:utils.c
的头文件。config.h
:config.h
的头文件。
-
docs/: 包含项目的文档文件。
README.md
: 项目的详细说明文档。
-
Makefile: 项目的编译文件,用于编译和构建项目。
-
README.md: 项目的简要说明文档。
2. 项目的启动文件介绍
src/main.c
main.c
是 Minifilter 项目的入口文件,负责初始化和启动 Minifilter。以下是 main.c
的主要功能:
- 初始化 Minifilter: 调用
FltRegisterFilter
函数注册 Minifilter。 - 启动 Minifilter: 调用
FltStartFiltering
函数启动 Minifilter。 - 卸载 Minifilter: 调用
FltUnregisterFilter
函数卸载 Minifilter。
#include <fltKernel.h>
#include "config.h"
NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath) {
NTSTATUS status;
PFLT_FILTER filter;
// 注册 Minifilter
status = FltRegisterFilter(DriverObject, &FilterRegistration, &filter);
if (!NT_SUCCESS(status)) {
return status;
}
// 启动 Minifilter
status = FltStartFiltering(filter);
if (!NT_SUCCESS(status)) {
FltUnregisterFilter(filter);
return status;
}
return STATUS_SUCCESS;
}
3. 项目的配置文件介绍
include/config.h
config.h
是 Minifilter 项目的配置文件头文件,定义了一些常量和配置项。以下是 config.h
的主要内容:
- 定义 Minifilter 的 Altitude: 用于指定 Minifilter 在文件系统过滤栈中的位置。
- 定义回调函数: 定义了 Minifilter 的预操作和后操作回调函数。
#ifndef CONFIG_H
#define CONFIG_H
#define MINIFILTER_ALTITUDE "370030"
typedef struct _FLT_OPERATION_REGISTRATION {
UCHAR MajorFunction;
FLT_OPERATION_REGISTRATION_FLAGS Flags;
PFLT_PRE_OPERATION_CALLBACK PreOperation;
PFLT_POST_OPERATION_CALLBACK PostOperation;
PVOID Reserved1;
} FLT_OPERATION_REGISTRATION, *PFLT_OPERATION_REGISTRATION;
#endif // CONFIG_H
通过以上配置,Minifilter 可以根据需要调整其在文件系统过滤栈中的位置,并定义相应的回调函数来处理文件系统操作。
Minifilter 参考《Windows内核安全与驱动开发》的透明加密解密Minifilter 项目地址: https://gitcode.com/gh_mirrors/mi/Minifilter