Mac 上的 XProtect 是什么,为什么占用 CPU
XProtect 是 macOS 内置的杀毒功能,Apple 的说法是基于特征码检测和清除恶意软件,较新的 Mac 上都有,没有自己的图标和窗口。活动监视器里出现 XProtect、xprotectd 或者名字带 XProtectRemediator 的进程都是正常的,CPU 短时间升高,通常是它在检查某个 App 或者跑定时扫描,让它跑完就行。
它做什么,什么时候做
Apple 的 防范恶意软件指南 讲了三个部分:
| 部分 | 做什么 |
|---|---|
| 特征码检测 | 用 Apple 更新的 YARA 特征码检查 App |
| 修复引擎 | 根据 Apple 发来的更新清除已知的感染,并定期继续检查 |
| 行为引擎 | 根据行为检测未知恶意软件,这些数据也用来改进特征码 |
Apple 说 XProtect 会在 App 首次启动、App 在文件系统里发生变化、特征码更新时检查已知的恶意内容,macOS 默认每天检查一次特征码更新,和系统更新是分开的,所以装了或者更新了 App、特征码刚更新之后都可能看到它在忙,有时候没有 App 相关的操作它也会跑一下。
发现恶意软件时,按 Apple 的说法,XProtect 会阻止它、把它移到废纸篓,并在访达里提醒你。它没有让你手动开始扫描的窗口,本来就不是这么设计的。
它在哪里
Apple 的指南没有写路径,核对这篇文章用的 Mac 上是这几个位置:
/Library/Apple/System/Library/CoreServices/XProtect.app
/usr/libexec/xprotectd
/var/protected/xprotect/XProtect.bundle
XProtect.app 里每一类要清除的恶意软件都有一个 XProtectRemediator… 程序,比如 XProtectRemediatorAdload,所以活动监视器里可能冒出你没见过的名字。/Library/Apple 带 restricted 标记,受系统完整性保护,sudo 也改不了。
看已安装的版本和更新记录:
xprotect version
system_profiler SPInstallHistoryDataType | grep -A 4 XProtect
如果你的 macOS 上找不到 xprotect 命令,就用第二行,它已经存在很久了。
它占用 CPU 时
装完或者打开新 App 后升高一阵是正常情况,接上电源给它几分钟。
一直很高的话:
- 打开活动监视器,选择「显示 › 所有进程」,按「% CPU」排序,记下确切的名字,以及是一直高还是一阵一阵的。
- 确认文件确实是 Apple 的,选中进程点 i 按钮,再看「打开的文件和端口」,程序应该在上面那几个路径之下。
- 做完手上的事重启一次,再观察十分钟,重启能结束卡住的扫描,下一次扫描 macOS 会自己安排。
- 到「系统设置 › 通用 › 软件更新」装上待安装的 macOS 更新。
- 如果连续好多天每天都跑几个小时,把看到的情况反馈给 Apple,并留意开始前后装了什么 App,文件一直在变的 App 会让 XProtect 有更多东西要查。
XProtect 安静下来还是慢,那就是别的原因了,可以看 Mac 进程怎么看。
只靠它够不够
对已知恶意软件它确实有保护作用,和门禁(Gatekeeper)、公证是配合着工作的。「系统设置 › 通用 › 软件更新 › 自动更新」里的「安装安全响应和系统文件」要开着,特征码更新就是从这里来的。它算不上完整的安全产品,没有扫描记录可看,没有网页过滤,也没有手动扫描按钮,要不要再装第三方产品,取决于你平时做什么、公司有什么要求。想卸掉一个的话,Mac 上怎么卸载杀毒软件 列了各家会留下什么。
不要这样做
- 不要尝试删除或者禁用它,这些文件夹是受保护的,绕过去的教程都要你关掉系统完整性保护,代价比一点 CPU 大得多。
- 不要反复强制退出它,macOS 需要时它还会运行,这些活只是被往后推了。
- 不要相信说 XProtect 发现了病毒、然后给你电话号码或者下载链接的弹窗,XProtect 只在访达里提醒,不会找你要任何东西。
- 不要因为认识名字,就把被拦下的 App 从废纸篓拿回来,到开发者那里重新下载一份。
Mole 能帮什么
Mole 不是杀毒软件,它不扫描恶意软件,「清理」里也没有 XProtect 这一项。这些进程排进最忙的那些行时,「状态」才会显示,同一个 App 包里运行的进程会合成一行,在那一行选择「为什么在运行?」能看到它的可执行文件,不开终端也能核对路径。如果在查的后台进程不是 XProtect,「软件」的「启动项」列出了第三方启动项目,顽固的流氓软件常常就装在这里。
常见问题
XProtect 是病毒吗?
不是,它是 Apple 的杀毒功能,是 macOS 的一部分。它的程序放在受保护的系统位置,同名进程要是从下载文件夹之类的地方运行,就值得怀疑了。
XProtect 可以关掉吗?
系统设置里关不了,也别关,绕过去都要削弱系统完整性保护,而它保护的远不止 XProtect。
XProtectRemediator 为什么在运行?
它负责按计划查找并清除特定的已知恶意软件,看到这些进程不代表 Mac 中毒了,它们是例行运行的,大多很快结束。
怎么看 XProtect 版本?
在终端里运行 xprotect version,想看更新记录就用 system_profiler SPInstallHistoryDataType | grep -A 4 XProtect。
有了 XProtect 还需要杀毒软件吗?
对很多人来说,它和门禁、公证一起已经能很好地应对已知恶意软件。它不提供扫描报告和手动扫描,公司有要求或者你需要这些功能时,才值得再装一个。