如何永久禁用 Windows Defender?Defender Control 完整指南:原理、风险与一键恢复
【免费下载链接】defender-controlAn open-source windows defender manager. Now you can disable windows defender permanently.项目地址: https://gitcode.com/gh_mirrors/de/defender-control
Defender Control 是一款开源的 Windows Defender 管理工具,支持永久禁用 Defender 实时防护,也支持一键完整恢复。它适合需要纯净测试环境、安全研究或深度性能调优的技术用户,普通用户请谨慎。
🎯 先说痛点:为什么"停服务"和"改组策略"都不管用了
Windows Defender 的自我保护机制,让传统禁用手段基本失效:
- 重启即复活:停止
WinDefend服务或改DisableAntiSpyware策略后,重启时 Defender 会重新注册自身、拉回服务状态。驱动WdBoot.sys作为 ELAM(早期启动反恶意软件)加载,开机阶段就参与自保护。 - 篡改保护(Tamper Protection):开启后,注册表中的关键防护键值由内核级保护,管理员进程去写也会被静默回滚——很多"禁用脚本"失败就卡在这一步。
- 进程杀不完:
MsMpEng.exe被看门狗机制拉起,手工结束进程属于治标。
典型受影响场景:编译大型工程时实时扫描抢占 CPU 和磁盘 I/O;安全研究/逆向需要干净的进程环境;老硬件上数百 MB 的常驻开销。这些需求共同点是——临时关闭不够,需要"下次开机引擎也起不来"级别的持久效果,这正是 Defender Control 的设计目标。
⚙️ 它到底做了什么:一次禁用操作的执行时间线
理解这个工具,最好跟着一次禁用操作的执行顺序看。以管理员身份运行disable-defender.exe后,流程大致如下:
- 自我提权到 TrustedInstaller。管理员令牌不足以操作 Defender 的受保护文件,工具通过任务计划程序(Task Scheduler)的
RunEx接口,让计划任务服务以NT SERVICE\TrustedInstaller账户重新拉起自己。TrustedInstaller 是 Windows 模块安装服务的系统账户,对系统文件有完整写权限。关键调用在 主流程:
// 优先走任务计划程序的 "RunEx" 技术,拿到干净的 TI 令牌 LONG exit_code = 0; if (trusted::run_as_ti_scheduled(exe, args, &exit_code)) { printf("Running as TrustedInstaller (Task Scheduler)...\n\n"); trusted::print_ti_log(); }若计划任务方式失败,会回退到旧的令牌复制方案(见 权限模块)。
- 清理运行时状态:结束
MsMpEng.exe、NisSrv.exe等十余个 Defender 相关进程,把WinDefend服务启动类型改为禁用,写入一大批组策略禁用键(实时防护、网络检查、扫描、签名更新等子树全覆盖,逻辑集中在 核心控制逻辑 的set_group_policies)。 - 核心动作——"软删除"二进制文件:把
WdFilter.sys(文件过滤驱动)、WdBoot.sys(启动驱动)以及引擎主程序MsMpEng.exe等文件重命名并加上.OLD后缀。驱动文件不在,下次开机引擎自然无法加载,且不需要进入安全模式。 - 留下恢复凭据:每重命名一个文件前,先把原路径追加写入
%ProgramData%\defender-control\soft-deleted.txt清单——即使中途崩溃,恢复流程依然有据可查。若文件被占用无法立即重命名,则用MOVEFILE_DELAY_UNTIL_REBOOT排到下次重启执行。 - 锁定安全中心界面:隐藏 Windows 安全中心各栏目和系统托盘图标,避免残留的 UI 持续报错。
注意一个细节:篡改保护键的写入是"尽力而为"的——引擎还在运行时这些写入会被内核回滚。工具的思路是不跟它抢注册表,直接拿掉驱动,等下次重启再定胜负。所以日志里出现
failed to write to TamperProtection这类报错是预期现象,不是失败。
⚠️ 动手之前:风险、边界与不适用场景
这一节放在实操前面,因为用错场景的代价比收益大得多。
核心警告:禁用 Windows Defender 意味着系统失去实时恶意代码拦截、云查杀和网络检查能力。只建议在完全受控的环境(虚拟机、沙箱、内网隔离机)中使用,不要用于日常联网的主力电脑。
你需要知道的边界:
- 会被 Defender 自己拦截。微软已为此项目建立了特征库,报
HackTool:Win32/DefenderControl并隔离 exe。这是针对"Defender 禁用类工具"的类别检测,不代表代码有恶意——项目开源,可自行审阅或自行编译。 - 必须先关篡改保护。在"Windows 安全中心 > 病毒和威胁防护 > 管理设置"中手动关闭,否则受保护键值写不进去,禁用会不完整。工具检测到篡改保护仍开启时会主动打印警告并建议先手动关闭。
- 部分效果依赖重启。运行中的引擎驻留在内存里,重命名驱动只在下次开机生效,所以工具会明确提示 REBOOT。
- SmartScreen 也会被一并禁用,下载和执行未知来源程序时将失去弹窗拦截——恢复前不要访问不可信网站。
- 不适用场景:多用户共享机、连接公网/企业网的办公机、装有重要数据且无备份的个人电脑、需要合规审计的生产环境。
🖥️ 上手与验证:从关闭到确认的完整闭环
禁用步骤
- 关闭篡改保护与实时保护(实时保护可临时关,避免它先吃掉工具文件)。
- 获取工具(自行编译或下载 release 中的
disable-defender.exe/enable-defender.exe)。自行克隆源码:git clone https://gitcode.com/gh_mirrors/de/defender-control - 以管理员身份运行
disable-defender.exe,等待 TrustedInstaller 工作进程完成。 - 重启系统。
- 观察演示效果可参考下面的操作演示(含状态检查输出):
验证是否真的生效
禁用后安全中心界面被锁定,用命令行检查最可靠:
disable-defender.exe -c它会同时查 WMI 状态(MSFT_MpComputerStatus)、MsMpEng.exe进程是否存在、WinDefend服务启动值,并给出结论(如DISABLED (service stopped and set to disabled))。加-s参数可跳过末尾的 pause 等待。
恢复步骤(与禁用对称)
enable-defender.exe恢复流程做的事:按清单把.OLD文件改回原名、恢复文件所有权为 TrustedInstaller、清除策略与 UI 锁定键值、把WinDefend设回自动启动,并尝试立即拉起服务(驱动类组件仍需重启加载)。重启后再次-c确认结论回到ACTIVE。
📊 禁用前后的实际变化
不堆数字,这里列的是可在自己机器上逐条核对的前后对比:
- 进程列表:前——
MsMpEng.exe、NisSrv.exe等常驻且被杀后自动复活;后——任务管理器中查无此列。 - 磁盘 I/O:前——新建、编译、拷贝文件时 Defender 随文件访问触发扫描,资源监视器中可见持续磁盘读写;后——文件操作不再触发实时扫描。
- WMI 查询:前——
AntivirusEnabled: True;后——引擎不在,WMI 提供者本身不可用(-c输出会标注这一点)。 - 安全中心:前——各功能栏可交互、托盘有盾牌图标;后——界面栏目被锁定隐藏,托盘图标消失。
- 开机行为:前——
WdBoot.sys/WdFilter.sys在启动早期加载;后——驱动文件缺失,引擎无法随开机启动。
恢复后以上各项逐条回退。提醒:收益是"少了这些开销",而不是"性能大幅提升"——真实提升幅度取决于你的负载和硬件,请在自己环境里量化,不要引用任何通用百分比。
🧩 深入与扩展:源码结构与二次开发
项目为单解决方案,模块划分很清晰,适合想在此基础上扩展的开发者:
| 文件 | 职责 |
|---|---|
| main.cpp | 参数解析(-c/-s/-worker/-tilog)、提权分派、禁用/恢复主序 |
| dcontrol.cpp | 全部禁用/恢复动作:策略、服务、进程、二进制软删除与恢复 |
| trusted.cpp | TrustedInstaller 获取:任务计划 RunEx 方案 + 令牌复制回退方案 |
| reg.cpp | 注册表读写封装,含文件所有权接管/归还 |
| wmic.cpp | WMI 访问封装(MSFT_MpPreference、MSFT_MpComputerStatus) |
| settings.hpp | 编译期开关 |
编译两个二进制:同一个工程,改一行宏即可。settings.hpp 中DEFENDER_CONFIG取DEFENDER_DISABLE编出禁用器,取DEFENDER_ENABLE编出恢复器。用 Visual Studio 2022 打开 src/defender-control.sln,选 Release / x64 构建。
值得精读的两个设计:
- 恢复的双保险:
restore_binaries先回放清单文件,再对Windows Defender安装目录、System32\drivers、ELAMBKUP做*.OLD全盘扫描兜底——清单丢了也能恢复。 - 跳过已正确的写操作:篡改保护下对服务键的重复写入会失败报错,代码采用"读后再写、值已正确则跳过"策略减少无谓噪音。
扩展点:想增加对某个防护组件的处理,在dcontrol.cpp中仿照现有disable_xxx()/enable_xxx()成对函数实现,再到 main.cpp 的#if DEFENDER_CONFIG分支中按禁用/恢复相反顺序调用即可。archive/目录下还保留了驱动函数 detour 等研究资料,可作背景阅读。
❓ 常见问题
Q1:运行后 Defender 报HackTool:Win32/DefenderControl并隔离了 exe,工具是病毒吗?不是。这是微软针对 Defender 禁用类工具的类别特征,任何同类工具都会命中。项目完全开源,可自行编译或使用 release 前核对来源。
Q2:日志里一堆failed to write to .../kernel-locked/error 5,是失败了吗?大部分是预期现象。篡改保护激活时,这些受保护键值对任何令牌(含 TrustedInstaller)的写入都会被内核拦截。关键看最终结论:驱动是否已重命名、重启后MsMpEng是否消失。
Q3:为什么必须重启?不重启行不行?不重启也能看到进程被结束,但运行中的引擎还在内存里,且驱动文件可能因占用被排到重启时才重命名。重启是禁用生效的完成条件,恢复同理。
Q4:恢复后 Defender 起不来怎么办?按顺序尝试:重跑enable-defender.exe并重启;以管理员运行DISM /Online /Cleanup-Image /RestoreHealth与sfc /scannow后重启;仍无效则用 Windows 安装媒体做保留文件的修复安装(in-place repair)。
Q5:能在企业域控电脑上用吗?不建议。域策略会持续把安全设置拉回基线,禁用效果不稳定且可能违反合规要求;这类需求应走 MDM/Intune 正式策略通道。
✅ 决策清单:三条提醒,先自查再动手
用之前,对照勾选:
- 环境受控:虚拟机/沙箱/物理隔离内网机,而非日常联网主力机
- 已创建系统还原点或完整镜像
- 已手动关闭篡改保护(不是指望工具替你关)
- 知道恢复方法:
enable-defender.exe+ 重启 +-c验证 - 禁用期间已避免下载和运行不可信来源的程序
三条提醒:
- 把它当"环境工具"而不是"日常开关"——禁用与恢复都应是有明确起止的阶段性操作。
- 信任开源代码胜过信任预编译文件——任何"系统级工具"自行编译一遍,成本很低,收益是完整信任链。
- 验证闭环不可省略——每次操作后跑一遍
-c,让 WMI 结论、进程状态、服务值三者一致,再谈"已经生效"。
【免费下载链接】defender-controlAn open-source windows defender manager. Now you can disable windows defender permanently.项目地址: https://gitcode.com/gh_mirrors/de/defender-control
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考