50、文件系统逆向:文件操作监控(Minifilter)、文件隐藏、文件保护
文件系统逆向,说白了就是跟操作系统底层的“文件搬运工”打交道。Windows 的文件系统驱动模型里,Minifilter 是一个绕不开的话题。我当年第一次接触它的时候,也被那套复杂的 IRP 处理流程搞得头大。但一旦你理解了它的设计哲学——说白了就是“挂个钩子,拦截一切”——很多安全软件、反病毒引擎、甚至某些恶意软件的原理,你一眼就能看穿。
这一讲,我们聚焦三个实战场景:文件操作监控、文件隐藏、文件保护。这三个能力,本质上都是通过 Minifilter 驱动在 I/O 路径上做手脚。你想想看,如果能拦截到每一次打开、写入、删除的请求,那还有什么秘密是藏得住的?
Minifilter 基础:一个轻量级的“中间人”
Minifilter 是 Windows 过滤管理器(Filter Manager)框架下的一个驱动模型。它比传统的 Legacy Filter 更轻量、更安全。我个人习惯把 Minifilter 想象成一个“高速公路上的检查站”——每个文件操作(IRP)都要经过这里,你可以选择放行、修改、或者直接拦截。
一个 Minifilter 驱动需要注册一个 FLT_REGISTRATION 结构体,告诉系统你想监控哪些操作。比如:
CONST FLT_REGISTRATION FilterRegistration = {
sizeof(FLT_REGISTRATION),
FLT_REGISTRATION_VERSION,
0,
NULL,
&MyMiniFilterUnload,
&MyInstanceSetup,
&MyInstanceQueryTeardown,
&MyInstanceTeardownStart,
&MyInstanceTeardownComplete,
NULL, // 生成安全回调
NULL, // 名称通知
NULL, // 正常关闭回调
NULL, // 事务通知回调
NULL, // 正常文件信息
NULL, // 正常文件名称
NULL, // 正常文件对象
NULL, // 正常文件对象上下文
NULL, // 正常流上下文
NULL, // 正常流句柄上下文
NULL, // 正常文件节点上下文
NULL, // 正常文件节点上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文
NULL, // 正常文件对象上下文