流氓软件克星
一个专门揪 Windows 右键菜单、自启动、计划任务、服务、浏览器插件和文件关联残留的小工具。
做它的原因很简单:有些软件明明只是输入法、网盘、文档、下载器、看图工具,却很喜欢悄悄把自己塞进右键菜单、开机启动、浏览器扩展和后台服务里。用户只是想用一个功能,它们倒好,顺手把电脑当成自家客厅。
作者:aakk007
v2 方向
v2 改成 C# WinForms 单文件主程序:
- 运行时不再依赖
RogueCleaner.ps1、rules或其它外部 sidecar 文件。 - 仓库和源码包也不再保留旧 PowerShell 引擎、旧 Launcher 或 WinRAR SFX 一键运行脚本。
- 首次运行只在 exe 同目录创建一个数据目录:
流氓软件克星数据。 - 扫描核心在 C# 内,多线程扫描右键菜单、“此电脑/资源管理器”入口、启动项、服务、计划任务、浏览器扩展和文件关联。
- 清理前备份,清理后复核并复扫。
- 增加恢复中心,可以按批次回滚注册表、被移动文件、服务启动状态和计划任务状态。
- 检查更新会从 GitHub Release 读取最新版,用户确认后下载直出 exe,替换完成后自动重启。
使用方式
普通用户下载 流氓软件克星.exe 后直接双击。
程序不会把自己搬家。你放桌面,它就在桌面运行;你放某个文件夹,它就在那个文件夹旁边创建:
流氓软件克星数据\这个目录用于保存:
reports:扫描和清理报告backups:清理前备份logs:错误日志updates:更新检查状态quarantine:被移动的文件state:更新检查等运行状态feedback:用户主动生成、提交前可预览的脱敏识别反馈
程序不会创建桌面快捷方式,也不会改动开始菜单或启动项。
用户能看懂什么
列表优先显示人话,不让普通用户看着注册表路径猜谜:
在哪里冒出来:右键菜单、开机启动、后台服务、计划任务、浏览器插件、文件关联等。用户会看到什么:右键菜单真实标题、服务名、任务名、打开方式名称。影响说明:它会在右键出现、开机自启、后台常驻,还是接管某类文件。工具会怎么处理:备份后删注册表、禁用服务、禁用计划任务、弹出卸载器,或者仅提示。- 鼠标悬停在行上会显示完整说明、技术位置和证据。
默认打开程序这类容易误伤日常使用的项目只提示,不参与一键清理。 疑似捆绑/弹窗/守护组件如果有卸载命令,工具会显示为“弹出卸载器,用户自己确认”。这类项目不会被“勾选可清理”批量勾上,必须手动勾选。
覆盖范围
当前内置识别:
- 360 系列
- WPS / 金山
- 百度 / 百度网盘
- 夸克 / 夸克网盘
- 搜狗
- 迅雷
- 钉钉
- 腾讯系
- 2345 系列
- Bandisoft / BandiView / Bandizip
- 猎豹 / 金山毒霸
- 驱动/硬件检测工具
- 国产压缩/看图工具
- 国产浏览器/导航
- Flash 中国特供组件
- 手机助手/设备助手
- 国产影音/游戏大厅
- PDF/办公捆绑工具
- 预装管家/厂商助手
扫描位置:
- 资源管理器右键菜单和常见 Shell 扩展
- “此电脑”、资源管理器导航栏和网络位置里的网盘/同步入口图标
- 开机启动注册表和启动文件夹
- Windows 后台服务
- Windows 计划任务
- Chrome / Edge 扩展策略和 Native Messaging Host
- Firefox/Mozilla Native Messaging Host
- 常见图片、视频、压缩包、Office 文档等文件关联和打开方式残留
- 疑似隐藏、不可移除、没有卸载命令的卸载项
默认不扫描主程序卸载项,避免不懂的人一键全选把正常软件主程序误卸载。 隐藏/无卸载入口的组件只报告,不默认卸载。 有卸载命令的疑似捆绑/弹窗/守护组件,清理时弹出原厂卸载器,由用户自己确认卸载。
厂商名称不是从整段注册表文本里做模糊子串猜测。程序会分别核对显示名、Publisher、文件版本信息、有效 Authenticode 签名、MSI 元数据和安装目录归属;GUID、哈希、PID、完整注册表路径以及 msiexec.exe、rundll32.exe 等系统宿主不能单独用来认定厂商。数字证书用于确认文件归属,不代表其弹窗、守护或隐藏行为合理。
如果确实命中独立的弹窗、广告、守护或自动恢复行为,但本地证据不足以确认厂商,结果会显示为“未知第三方”,并且只能提示,不能进入一键清理或自动卸载链。
风险控制
- 打开软件默认不清理。
- 扫描结果默认不勾选。
勾选可清理不会勾选“仅提示”项目。- 清理前二次确认。
- 涉及 HKLM、服务、计划任务时需要管理员权限;不是管理员会提示用“管理员重启”。
- 清理后逐项复核,失败或残留会继续留在复扫列表里。
恢复中心
每次清理都会生成一个备份批次,保存在:
流氓软件克星数据\backups\点 恢复中心 可以选择批次恢复。
更新
程序会按天检查 GitHub Release 是否有新版本。发现新版本时会弹窗询问是否下载并自动重启更新:
https://github.com/aakk007/RogueCleaner/releases不会静默更新。只有用户在弹窗里确认后,才会下载 Release 里的直出 exe,并在本地完成替换重启。
下载与校验
当前推荐只下载 GitHub Release 里的直出 EXE:
RogueCleaner-v2.0.12-*.exe压缩包主要给需要审查源码或保留完整发布包的人使用。每次打包会同时生成 SHA256SUMS-v2.0.12-*.txt,用于核对下载文件是否和发布文件一致。
如果安全软件提示风险,优先核对来源和 SHA256。这个工具会读取、备份、删除注册表项,禁用服务和计划任务,容易被启发式规则归为系统工具类风险;项目原则是不加壳、不混淆、不内嵌脚本、不做自解压一键包、不绕过安全软件。
构建
需要 Windows 自带的 .NET Framework 4.x 编译器:
powershell -NoProfile -ExecutionPolicy Bypass -File .\Build-Exe.ps1输出:
流氓软件克星.exe
dist\流氓软件克星\流氓软件克星.exev2 发布目录只包含 exe,不再包含 .md、.ps1 或规则目录。源码包只包含 v2 源码、manifest、图标和构建脚本,不再混入旧 Launcher、旧 PowerShell 运行链路或 WinRAR SFX 自解压脚本。
开发烟测:
.\流氓软件克星.exe --scan-smoke这个参数只扫描并写报告,不弹 GUI,不执行清理。GUI 扫描异常时也会写入 reports\scan-error-*.json,方便把失败证据发回来,而不是只剩一句“扫描失败”。
厂商身份碰撞回归:
.\流氓软件克星.exe --identity-smoke这个参数会验证 Corel GUID 中偶然出现 2345、系统 MSI 宿主、Thunderbird,以及各厂商关键词出现在 GUID、随机路径或注册表位置时均不会误认厂商。
反馈脱敏回归:
.\流氓软件克星.exe --feedback-smoke这个参数会用包含用户名、SID、用户目录、邮箱、URL、令牌和网络地址的模拟证据验证反馈脱敏,失败时返回非零退出码并在 reports 中写入结果。
界面布局回归:
.\流氓软件克星.exe --ui-smoke这个参数会在默认窗口和最小窗口下检查“开始扫描”“清理勾选”“检查更新”“反馈”的可见性与排列,填充本地模拟结果验证右侧详情面板,并把主界面、最小窗口和反馈窗体截图写入 reports。它不扫描、清理或提交反馈。
识别反馈
扫描后,可从顶部“反馈”入口反馈当前选中的结果,并选择误报、漏报、身份错误或关联错误;漏报不要求先选中扫描结果。程序只提取当前项目需要的字段,先在本地预览并脱敏,再保存到 流氓软件克星数据\feedback。选择“复制并打开 GitHub”后,详细内容进入剪贴板,浏览器打开结构化 Issue 表单,最终是否公开提交由用户确认。
程序不会保存 GitHub Token,也不会在后台直接提交。默认不包含文件 SHA256,不上传文件或完整系统清单;用户名、SID、计算机名、用户目录、邮箱、URL、令牌和网络地址会被替换。GitHub Issue 仅作为待验证样本,后续需复核并转成回归用例,不能直接改变本机识别或清理规则。
发布前清理验收需单独编译验证版,正式发布版不带验收器,减少安全软件启发式误报:
powershell -NoProfile -ExecutionPolicy Bypass -File .\Build-Exe.ps1 -ValidationBuild
.\dist\流氓软件克星\流氓软件克星.exe --acceptance-test这个参数会创建带 CodexRogueCleanerTest 前缀的模拟右键菜单、开机启动、浏览器宿主、文件打开方式、计划任务和服务项,调用正式扫描/清理/恢复核心,再写入验收报告。
注意:服务项需要管理员权限;如果当前系统策略禁止创建注册表或计划任务模拟工件,报告里会显示 SetupFailed,不能把这种结果当成“功能已验证”。
原则
- 不常驻后台。
- 不加壳。
- 不混淆。
- 不静默更新。
- 不绕过软件自保护。
- 不改写
UserChoice。 - 不默认卸载主程序。
- 不删除用户文档。
- 先备份,再清理,清理后复扫。