DKOM在现代Windows中不可行:PatchGuard、HVCI和驱动签名强制机制使其必然触发蓝屏或拦截;唯一合法路径是使用minifilter、ETW、WFP等微软支持接口。

不能安全、合法或合规地实现。
DKOM 属于未公开、高危且被现代系统严格防御的内核操作
Windows 内核从 Vista 开始启用 PatchGuard(KPP),对关键数据结构(如 EPROCESS 链表、TCPTABLE 等)实施完整性校验。任何直接修改 ActiveProcessLinks 或网络连接结构体的行为,会在下一次校验周期(通常几秒内)触发蓝屏:错误代码 KERNEL_SECURITY_CHECK_FAILURE (0x139) 或 ATTEMPTED_WRITE_TO_READONLY_MEMORY (0xBE)。
- 所有已知 DKOM 技术(包括挂钩
PsLookupProcessByProcessId、篡改EPROCESS.Token、遍历ActiveProcessLinks删除节点)在启用了 HVCI(基于虚拟化的安全)的 Win10/11 上完全失效 - 微软明确将此类操作归类为“恶意行为”,Windows Defender 和 Hypervisor-protected Code Integrity 会直接拦截驱动加载
- 没有签名的内核驱动无法在默认配置的 64 位 Windows 上加载(Driver Signature Enforcement 强制启用)
替代路径只存在于合法调试与安全研究场景中
如果你需要隐藏进程用于安全产品开发或内核调试验证,唯一可行方式是通过微软支持的接口:
- 使用
FltRegisterFilter+ 文件/注册表/网络 minifilter 实现逻辑层过滤(例如让NtQuerySystemInformation返回过滤后的进程列表,而非篡改内核链表) - 利用 ETW(Event Tracing for Windows)订阅
Microsoft-Windows-Kernel-Process事件,在用户态聚合并选择性丢弃特定进程事件 - 对于网络连接控制,应走
WFP(Windows Filtering Platform)的FWPM_LAYER_ALE_AUTH_CONNECT_V4层进行连接授权拦截,而非修改TCPTABLE
调试环境下验证 DKOM 行为极易导致系统崩溃
即使在关闭 PatchGuard 的测试机(如旧版 Windows 7 虚拟机)上尝试,也需注意:
立即学习“C++免费学习笔记(深入)”;
-
EPROCESS结构随系统版本频繁变更(Win10 RS5 后ActiveProcessLinks已移至LIST_ENTRY偏移 0x2f8,RS1 是 0x2e8),硬编码偏移必然出错 - 删除链表节点后未同步更新
UniqueProcessId对应的哈希表(PspCidTable)会导致后续PsLookupProcessByProcessId返回无效指针 - 未处理
PsSuspendProcess/PsResumeProcess调用路径下的进程状态同步,可能引发死锁或资源泄漏
真正稳定的进程/连接控制必须依赖 WFP、ETW、minifilter 等受支持机制;任何绕过这些接口、直写内核结构体的操作,在当前 Windows 版本中既不可靠,也不可持续——哪怕只是临时调试,也大概率在你写完第二行 RemoveEntryList 之前就触发了 CRITICAL_STRUCTURE_CORRUPTION (0x109)。


















