|
| 1 | +# DefenderControl Roadmap |
| 2 | + |
| 3 | +PowerShell WPF Defender disable/enable utility with 4-level permission escalation and PPL flag stripping. Tracks work beyond the current release. |
| 4 | + |
| 5 | +## Planned Features |
| 6 | + |
| 7 | +### Core Operations |
| 8 | +- Unified undo manifest (JSON, mirror Debloat-Win11) so `Enable` can replay the exact inverse of a specific `Disable` run |
| 9 | +- Atomic transaction log — every registry write appends a before/after pair so partial failures are fully reversible |
| 10 | +- Phase-level `-Only` / `-Skip` flags mirroring the 10-phase pipeline for surgical control |
| 11 | +- Verification suite after `Disable`: runs `Get-MpComputerStatus` and a synthetic EICAR test (opt-in) to confirm real-time is actually off |
| 12 | +- Safe Mode bootstrap: self-schedule a one-shot task that runs the script in Safe Mode for keys that resist all 4 escalation methods |
| 13 | + |
| 14 | +### UI |
| 15 | +- Restyle WPF to Catppuccin Mocha (match DefenderShield / DisableDefender) instead of the current palette |
| 16 | +- Dashboard tiles showing PPL status per service (MsMpEng, WdFilter, WdBoot, WdNisDrv) |
| 17 | +- Live telemetry counter (how many ETW Microsoft-Antimalware events observed in last N seconds) to visually prove real-time is off/on |
| 18 | +- Tamper Protection hand-holding: one-click launch of `ms-settings:windowsdefender` with on-screen instructions |
| 19 | +- Log pane: per-line filter chips (Phase / Method / Service), copy-as-markdown for bug reports |
| 20 | + |
| 21 | +### CLI |
| 22 | +- Full CLI parity with the GUI: `-Mode Disable|Enable|Status|Verify`, `-DryRun`, `-Silent`, `-NoRestorePoint`, `-NoReboot` |
| 23 | +- Structured JSON output with `-Json` for piping into other automation |
| 24 | +- Exit codes: 0 success, 1 partial, 2 blocked by Tamper Protection, 3 blocked by Safe Mode needed |
| 25 | +- `Install-Module DefenderControl` PSGallery publish path |
| 26 | + |
| 27 | +### Safety |
| 28 | +- Firewall integrity pre/post guard (adopt DisableDefender's refuse-list pattern) — abort if mpssvc/BFE get touched |
| 29 | +- Pre-flight network check: warn when Defender is disabled and no third-party AV is detected (Registry: `HKLM:\SOFTWARE\Microsoft\Security Center\Provider\Av`) |
| 30 | +- Auto-reboot suppression when BitLocker recovery-key prompt would interrupt |
| 31 | +- Health scan mode: enumerate every known Defender component and report current state without modifying |
| 32 | + |
| 33 | +### Integrations |
| 34 | +- Intune Win32 detection script + remediation pair |
| 35 | +- Group Policy ADMX template stub that disables Defender via GPO — for shops that want GPO-first deployment |
| 36 | +- Event Log source (`DefenderControl`) so SIEM pipelines can track every disable/enable action |
| 37 | + |
| 38 | +### Packaging |
| 39 | +- Authenticode-sign the `.ps1` + GUI launcher; publish SHA256SUMS alongside each release |
| 40 | +- Portable ZIP release asset with the script + README + LICENSE bundled |
| 41 | +- Per-release changelog bullets that match the CLAUDE.md version strings |
| 42 | + |
| 43 | +## Competitive Research |
| 44 | + |
| 45 | +- **DisableDefender (sibling repo)** — Adjacent project in the same repo family; share the refuse-list firewall guard, the 4-level escalation code, and the Catppuccin theme. |
| 46 | +- **DefenderControl by Sordum** (closed-source reference tool) — Benchmark for the "single button" UX; DefenderControl here wins on auditability (open source + logs) and loses on polish — close that gap with the Catppuccin rework. |
| 47 | +- **Windows-Defender-Remover (ionuttbara)** — Aggressive removal via DISM; reference for the nuclear path, but `DefenderControl` positions as the reversible sibling — keep the boundaries clear. |
| 48 | +- **Powershell-Scripts / privacy.sexy** — Comprehensive catalog of Defender keys; use as a source of truth for Phase 4 coverage and auto-sync missing keys weekly via an Action. |
| 49 | + |
| 50 | +## Nice-to-Haves |
| 51 | + |
| 52 | +- Optional watchdog scheduled task that re-applies disable settings after every reboot (opt-in, for kiosk/imaging machines) |
| 53 | +- "Explain mode" — hover any registry key in the log to see the admx.help description |
| 54 | +- Preset profiles (Developer, Kiosk, Medical Imaging, VM Host) that pick the right subset of phases |
| 55 | +- Diff view comparing two Status snapshots so a support engineer can see what changed between runs |
| 56 | +- HTML report export of an entire run suitable for attaching to an incident ticket |
| 57 | +- Remote mode (`-ComputerName`) via WinRM to operate on a fleet (with opt-in only and heavy warning) |
| 58 | + |
| 59 | +## Open-Source Research (Round 2) |
| 60 | + |
| 61 | +### Related OSS Projects |
| 62 | +- **ionuttbara/windows-defender-remover** — https://github.com/ionuttbara/windows-defender-remover — Covers the full Defender surface: Security App, VBS, SmartScreen, Web-Threat, App Guard, Driver Block List, Settings-app page. Also ships ISO-maker flow. |
| 63 | +- **es3n1n/defendnot** — https://github.com/es3n1n/defendnot — Undocumented WSC (Windows Security Center) API trick: registers a fake AV so Defender auto-disables itself. Requires binary-on-disk persistence. |
| 64 | +- **pgkt04/defender-control** — https://github.com/pgkt04/defender-control — Open-source spiritual successor to Sordum's now-discontinued tool. |
| 65 | +- **zoicware/DefenderProTools** — https://github.com/zoicware/DefenderProTools — DISM + TrustedInstaller approach for removing Defender from ISOs; brute-force registry nuke. |
| 66 | +- **S12cybersecurity/WinDefenderKiller** — https://github.com/S12cybersecurity/WinDefenderKiller — Registry disable + BYOVD process termination; reference for advanced bypass research. |
| 67 | +- **Nolan-Burkhart/defender-disabler** — https://github.com/Nolan-Burkhart/defender-disabler — Minimal C++ registry-only reference implementation. |
| 68 | +- **disable-windows-defender/disable-windows-defender.github.io** — https://github.com/disable-windows-defender/disable-windows-defender.github.io — Pure `.reg` file pair (disable/restore); useful as a minimum-viable fallback baked into DefenderControl. |
| 69 | + |
| 70 | +### Features to Borrow |
| 71 | +- WSC-API fake-AV registration approach as an alternate disable strategy, with clear trade-offs documented (needs persistent binary, flagged as `VirTool:Win64/Defnot.A`) — borrow from `defendnot`. Ship as opt-in "Method B". |
| 72 | +- TrustedInstaller-mediated key writes for tamper-protection-enabled systems — borrow from `DefenderProTools` and Sordum's PowerRun technique. Keep the user's existing ACL-takeover path and add TI as fallback. |
| 73 | +- ISO-maker integration so images can be pre-hardened — borrow from `ionuttbara/windows-defender-remover`. |
| 74 | +- Expanded disable surface beyond just Defender AV: SmartScreen, Web-Threat service, Driver Block List, App Guard, VBS — borrow from `ionuttbara/windows-defender-remover` checklist. |
| 75 | +- BYOVD (bring-your-own-vulnerable-driver) preflight warning documented in README even if not shipped — borrow from `WinDefenderKiller`. |
| 76 | +- "Disable + Restore" paired `.reg` file export so users can apply/undo without the GUI — borrow from `disable-windows-defender.github.io`. |
| 77 | +- Build-from-source instructions prominently documented because `.exe` releases are flagged by AV — borrow from `ionuttbara/windows-defender-remover` README. |
| 78 | + |
| 79 | +### Patterns & Architectures Worth Studying |
| 80 | +- `defendnot`'s WSC API reverse-engineering: undocumented COM interface, NDA-gated docs; novel primitive worth adding to DefenderControl's method matrix. |
| 81 | +- `ionuttbara/windows-defender-remover`'s service/feature checklist — use as a coverage matrix for DefenderControl's 10-phase disable to spot gaps. |
| 82 | +- Sordum Defender Control's 4-axis approach (direct keys + policy keys + Systray stop + mpcmdrun block + service startup edits) as the minimum table of ops — already mostly in DefenderControl; verify parity. |
| 83 | +- `r12w4n/disable-defender`'s wrapper pattern (orchestrates external tools rather than reimplementing) — alternate distribution model if upstream maintenance burden becomes too high. |
0 commit comments