流氓软件创建的隐藏服务需通过命令行穿透识别并清除:先用任务管理器查可疑svchost.exe命令行,再用sc queryex定位服务名,powershell停用后删除注册表项;若受wmi托管,需临时禁用winmgmt服务;还需扫描wmi事件订阅和计划任务残留。

确认并停止流氓软件创建的隐藏服务
系统里出现无法在“服务”界面直接看到、却持续占用CPU或网络的后台行为,大概率是流氓软件通过WMI或SCM注入的隐藏服务。这类服务不显示在services.msc列表中,但会通过svchost.exe宿主进程伪装运行,必须用命令行穿透识别。
按下 Ctrl + Shift + Esc 打开任务管理器→切换到“详细信息”选项卡→按“命令行”列排序(若该列未显示,右键表头→勾选“命令行”)→滚动查找含“-k netsvcs”“-k wsappx”“-k DcomLaunch”等参数后还追加了可疑路径(如 C:UsersPublicsvcloader.dll)的svchost.exe进程。
双击该行打开“属性”→“详细信息”页,记下PID;保持任务管理器开着,按下 Win + R 输入 cmd →右键“以管理员身份运行”→执行:
sc queryex type= service state= all | findstr /i "PID" & sc queryex type= service state= all | findstr /i "0x[0-9A-F]{8}"(把刚才记下的PID替换进第二条命令末尾的数字位置)→回车后若返回服务名(如“BRSvcHost”),说明它已注册为合法服务但被隐藏显示。
用PowerShell强制停用并删除注册表服务项
隐藏服务往往绕过常规sc delete逻辑,直接删注册表键值更可靠。先确保服务已停止:在管理员PowerShell中执行:
Stop-Service -Name "BRSvcHost" -Force -ErrorAction SilentlyContinue(将BRSvcHost替换成上一步查到的真实服务名)。
接着执行注册表清理:
Remove-Item -Path "HKLM:SYSTEMCurrentControlSetServicesBRSvcHost" -Recurse -Force(此操作不可逆,【必须确认服务名完全正确,拼错会导致系统关键服务损坏】)。
如果提示“访问被拒绝”,说明该服务正被WMI托管。此时需先禁用WMI服务依赖链:在管理员PowerShell中运行:
Set-Service -Name winmgmt -StartupType Disabled → Restart-Service -Name winmgmt -Force → 再执行上一条Remove-Item命令 → 最后恢复WMI:
Set-Service -Name winmgmt -StartupType Automatic → Start-Service -Name winmgmt。
清除WMI命名空间中的恶意服务实例
部分高级流氓软件不走Service Control Manager,而是直接在rootCIMV2或rootsubscription命名空间里部署WMI永久事件消费者,实现“无服务进程”的自启和复活。这类实例在服务管理器里完全不可见,但会在每次开机时自动拉起新进程。
第一步:在管理员PowerShell中运行以下命令导出所有活跃的WMI事件绑定:
Get-WmiObject -Namespace rootsubscription -Class __EventFilter | ForEach-Object { $_.Name + " | " + $_.Query } → 逐行检查Query字段是否包含可疑路径(如“C:WindowsTemp
un.vbs”“powershell -exec bypass -c IEX”)或非常规进程名(如“svchost64.exe”“wuauserv.exe”)。
第二步:定位到对应Filter后,顺藤摸瓜找它的Consumer:
Get-WmiObject -Namespace rootsubscription -Class __FilterToConsumerBinding | Where-Object { $_.Filter -match "YourFilterName" }(把YourFilterName替换成上一步得到的Name值)→ 记下Consumer字段里的完整路径(如“\.
ootsubscription:CommandLineEventConsumer.Name="MalwareRunner"”)。
第三步:彻底删除Filter、Consumer、Binding三者:
Remove-WmiObject -Namespace rootsubscription -Class __EventFilter -Filter "Name='MalwareRunner'"
Remove-WmiObject -Namespace rootsubscription -Class CommandLineEventConsumer -Filter "Name='MalwareRunner'"
Get-WmiObject -Namespace rootsubscription -Class __FilterToConsumerBinding | Where-Object { $_.Filter -match "MalwareRunner" } | Remove-WmiObject。
扫描并终止残留的计划任务式服务伪装
有些流氓软件根本没注册服务,而是把自身伪装成“计划任务”启动,任务触发条件设为“用户登录时”“空闲时”或“系统启动后1分钟”,再通过taskeng.exe加载DLL,从而规避服务检测。
第一步:在管理员PowerShell中运行:
Get-ScheduledTask | Where-Object { $_.TaskPath -notlike "Microsoft*" -and ($_.Actions.Execute -match "dllhost|powershell|wscript|cmd.exe") } | Format-List TaskName,TaskPath,State → 查看输出中是否有名称含“Update”“Clean”“Boost”且状态为“Ready”的可疑任务。
第二步:对确认的恶意任务,执行:
Disable-ScheduledTask -TaskName "QuickCleanUpdater" -TaskPath "XSoft"(替换为实际TaskName和TaskPath)→ 紧接着运行:
Unregister-ScheduledTask -TaskName "QuickCleanUpdater" -TaskPath "XSoft" -Confirm:$false。
第三步:手动检查任务对应的XML定义文件是否残留:
进入 C:WindowsSystem32TasksXSoft(路径与TaskPath一致)→ 若文件夹存在,【Shift+Delete永久删除整个文件夹】,不要仅删XML文件——里面可能藏有同名DLL或EXE。











