368 字
2 分钟
卸载管理器 v0.0.3 发布:安全加固 F1–F10

v0.0.3 以“纵深防御”为目标,对命令注入、路径绕过、DLL 种植、缓存投毒和意外提权等攻击面进行了系统加固。完整审计过程见本地 tools/security_audit_report.md。

命令注入与路径绕过#

  • F1 PowerShell 命令注入:自卸载桩对 InstallLocation 中的单引号做转义(''),powershell.exe 改用 System32\WindowsPowerShell\v1.0\ 完整路径。
  • F2 reg.exe 参数注入:提权删注册表前校验键名不含 ",含则拒绝;reg.exe 改用 System32 完整路径。
  • F3 8.3 短名绕过:isProtectedPath 比较前用 GetLongPathNameW 还原 PROGRA~1 等长名,防止误删 Program Files 目录。
  • F4 裸系统二进制名:reg.exe、powershell.exe、taskkill.exe、explorer.exe、regedit.exe、msiexec.exe 全部改用 GetSystemDirectoryW 完整路径,杜绝 DLL/二进制种植。
  • F5 UI 线程阻塞:提权删 reg.exe 等待改为 MsgWaitForMultipleObjects + 消息泵,UAC 期间界面不再假死。

篡改与提权防御#

  • F6 DLL 种植劫持:main() 入口调用 SetDllDirectoryW(L"") + SetSearchPathMode,从 DLL 搜索顺序移除当前目录、启用安全搜索模式。
  • F8 缓存投毒:uninstaller_cache.json 增加 Sha256 + 盐完整性校验,被清空或篡改即丢弃并回退实时扫描。
  • F10 UAC 清单缺失:新增 app.manifest 与 installer.manifest,显式声明 asInvoker / uiAccess=false,修复因 exe 名含 “uninstall”/“Setup” 触发 Windows 自动提权的问题。

发布前必做#

  • 代码签名(Authenticode)需证书,当前环境无法签名;下载页与 Release 提供 SHA-256 校验值 作为替代校验手段。

下载#

卸载管理器 v0.0.3 发布:安全加固 F1–F10
https://cai-zhi-huang.github.io/blog/posts/2026-08-26-uninstaller-v003/
作者
CZH
发布于
2026-08-26
许可协议
CC BY-NC-SA 4.0