wesmar/WinDefCtl
GitHub: wesmar/WinDefCtl
WinDefCtl 是一款通过 UI Automation API 静默控制 Windows Defender 实时防护和篡改保护开关的命令行工具,可自动处理 UAC 弹窗并实现完全隐蔽的执行过程。
Stars: 19 | Forks: 4
# WinDefCtl - Windows Defender 自动化与控制工具
**实时防护与篡改保护自动化管理**
[](LICENSE)
[]()
[]()
## 📦 可用版本
### PowerShell 脚本版本
应 [MyDigitalLife (MDL) 社区](https://forums.mydigitallife.net/threads/command-line-utility-to-turn-on-off-windows-defender-and-tamper-protection.89900/) 的强烈要求,现已提供 PowerShell 脚本版本:**WinDefCtl.ps1**
该脚本版本提供与编译工具相同的核心功能,允许偏好脚本解决方案或需要直接查看源代码的用户在完全透明的情况下管理 Windows Defender 设置。
这两个版本在控制实时防护和篡改保护设置方面提供非常相似的功能。
## 📋 概述
WinDefCtl 是一个命令行工具,通过 UI Automation API 对 Windows Defender 的实时防护 (RTP) 和篡改保护设置进行自动控制。它具备隐蔽执行能力,使用户无法看到安全配置的更改过程。
**作者:** Marek Wesołowski - WESMAR
**联系方式:** marek@wesolowski.eu.org | +48 607-440-283
**网站:** https://kvc.pl
**GitHub:** https://github.com/wesmar/WinDefCtl/
## ✨ 主要特性
### 核心功能
- **实时防护控制** - 启用/禁用/检查 RTP 状态
- **篡改保护控制** - 启用/禁用/检查篡改保护状态
- **隐蔽执行** - 使用 DWM 隐藏技术实现不可见的窗口管理
- **自动 UAC 处理** - 临时抑制 UAC 并在操作后自动恢复
- **冷启动检测** - 在登录后首次运行时进行智能预热
- **可靠的操作确认** - 通过结构密度检测 UI 变化
### 技术实现
- **UI Automation API** - 无需修改注册表或服务
- **多层窗口隐藏** - 透明度控制、DWM 隐藏、离屏定位
- **智能超时机制** - 为较慢的硬件提供延长的等待时间(10 秒)
- **会话感知预热** - 使用易失性注册表标记以优化性能
- **原子操作** - 完全成功或自动回滚
- **UAC 恢复系统** - 崩溃或中断时自动恢复
## 🚀 用法
### 基本命令
```
# Real-Time 保护
WinDefCtl rtp status # Check current RTP status
WinDefCtl rtp on # Enable Real-Time Protection
WinDefCtl rtp off # Disable Real-Time Protection
# Tamper 保护
WinDefCtl tp status # Check current Tamper Protection status
WinDefCtl tp on # Enable Tamper Protection
WinDefCtl tp off # Disable Tamper Protection
```
### 示例工作流
```
# 检查当前状态
WinDefCtl rtp status
WinDefCtl tp status
# 为维护禁用保护
WinDefCtl rtp off
WinDefCtl tp off
# 维护后重新启用保护
WinDefCtl tp on
WinDefCtl rtp on
```
### 登录后首次运行(冷启动)
在用户登录或注销/登录后的首次执行时,WinDefCtl 会执行自动预热阶段:
```
=== Windows Defender Tamper Protection Control ===
[*] Opening Windows Defender...
[*] Cold boot detected - pre-warming Windows Defender...
[*] Pre-warm window found, waiting for full initialization...
[*] Closing pre-warm window...
[*] Retry close with PostMessage...
[*] Pre-warm complete
[*] Backing up and disabling UAC prompts...
[*] Waiting for UI update... [OK]
[*] Restoring original UAC settings...
[*] Operation completed.
```
这是正常行为,旨在确保操作可靠。同一登录会话中的后续执行将跳过预热阶段。
## ⚙️ 工作原理
### 冷启动检测与预热
**为什么需要预热:**
在用户登录后首次启动时,Windows Security UI 组件未加载到内存中。虽然窗口看起来已准备就绪,但内部组件(消息循环、事件处理程序)可能未完全初始化。这会导致关闭消息被忽略,从而阻碍正常的自动化流程。
**预热解决方案:**
1. **会话检测** - 检查位于 `HKCU\Software\WinDefCtl\WinDefCtl_Warmed` 的易失性注册表项
2. **首次运行检测** - 如果该项不存在,则为登录后的首次运行(冷启动)
3. **组件加载** - 打开 Windows Security 窗口,等待完全初始化(约 5 秒)
4. **优雅关闭** - 使用多种策略(WM_SYSCOMMAND, PostMessage 后备方案)关闭窗口
5. **会话标记** - 设置易失性注册表标志(注销时自动删除)
6. **后续运行** - 标记存在 = 组件已在内存中 = 跳过预热
这确保了在开始实际自动化之前,所有 Windows Security 组件均已加载并处于响应状态。
### 隐蔽窗口管理(“幽灵模式”)
WinDefCtl 使用多种技术完全不可见地打开 Windows Security 界面:
1. **透明度技巧** - 将窗口 Alpha 值设置为 0(不可见)
2. **DWM 隐藏** - 从窗口管理器和任务栏中隐藏
3. **逻辑传送** - 劫持还原位置至离屏坐标
4. **物理传送** - 立即将窗口移动到 (-4000, -4000)
5. **显示但不激活** - 窗口保持自动化活动状态但被隐藏
### UAC 操作
临时修改注册表以抑制 UAC 提示:
- **备份** - 保存原始的 `ConsentPromptBehaviorAdmin` 和 `PromptOnSecureDesktop` 值
- **禁用** - 将两个值均设置为 0(无提示)
- **恢复** - 操作后自动恢复原始值
- **恢复机制** - 启动时检测未完成的操作并自动恢复 UAC
### UI Automation 策略
使用“结构密度”方法确保操作可靠:
1. **元素计数** - 统计窗口中的所有 UI 元素
2. **基线捕获** - 在切换操作前记录元素数量
3. **结构变化检测** - 等待元素数量变化(警告对话框出现/消失)
4. **确认** - 验证变化后的稳定状态
### 切换开关检测
- **首个开关** - 实时防护(UI 中的顶部开关)
- **最后一个开关** - 篡改保护(UI 中的底部开关)
- 使用 `IUIAutomationTogglePattern` 与开关交互
- 在切换前检测当前状态以避免不必要的操作
## 🛠️ 技术要求
- **操作系统:** Windows 11(具有现代 Windows Security 界面)
- **权限:** 需要管理员权限
- **依赖项:** UI Automation API, DWM API
- **编译器:** Visual Studio 2022 (C++20)
## ⚠️ 重要说明
### 操作行为
- 打开 `windowsdefender://threatsettings` URI
- 窗口立即最小化并隐藏(40 次重试 × 250ms = 10 秒超时)
- UI 加载超时:100 次重试 × 100ms = 10 秒
- 冷启动检测在登录后首次运行时增加约 5-7 秒
- 所有操作均记录到控制台 (DEBUG_LOGGING_ENABLED = 1)
### 注册表项
**UAC 备份** (HKLM):
位于 `HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System`:
- `ConsentPromptBehaviorAdmin` - UAC 提示行为
- `PromptOnSecureDesktop` - 安全桌面设置
- `UACStatus` - 备份存储(自定义键)
**会话标记** (HKCU):
位于 `HKCU\Software\WinDefCtl`:
- `WinDefCtl_Warmed` - 易失性标志(注销时自动删除)
- 用于冷启动检测和跳过预热逻辑
### 限制
- 需要活动的用户会话(不支持无头执行)
- 无法从 Windows PE 或安全模式运行
- 某些更改可能需要系统重启才能完全生效
- 预热使登录后的首次执行增加 5-7 秒
## 📞 支持与贡献
### 专业服务
如需定制修改、企业支持或安全咨询:
- **电子邮件:** marek@wesolowski.eu.org
- **电话:** +48 607-440-283
### 源代码
- **GitHub:** https://github.com/wesmar/WinDefCtl/
## 📄 许可证
本项目基于 MIT 许可证发布。详情请参阅 LICENSE 文件。
## ⚖️ 法律与道德声明
**仅供授权的安全测试和系统管理使用。**
- 用户需对执行的所有操作承担全部法律责任
- 在任何系统上使用前,请确保已获得适当授权
- 此工具会修改系统安全设置 - 请负责任地使用
- 滥用可能违反您所在司法管辖区的计算机犯罪法
**使用此工具即表示您已理解并接受全部责任。**
**版权所有 © 2025 Marek Wesołowski - WESMAR。保留所有权利。**
标签:AI合规, Awesome, DNS 反向解析, DWM 隐藏, EDR 绕过, IPv6, OpenCanary, PowerShell, Shell模拟, UAC 绕过, UI 自动化, Windows 11, Windows Defender, 免杀技术, 协议分析, 安全测试, 安全配置, 实时防护, 攻击性安全, 暴力破解检测, 权限提升, 系统管理, 网络安全, 防篡改保护, 隐私保护