Gatekeeper 是一次性准入控制机制,仅在应用首次运行时验证签名、公证及隔离属性;XProtect 才是实时防护引擎,后台静默扫描启动行为并匹配YARA规则拦截已知威胁。
gatekeeper 本身不提供实时监控,它是一次性验证机制,只在应用首次运行时触发检查。所谓“实时监控”其实是误解——真正承担实时防护任务的是 xprotect,而 gatekeeper 的角色是前置准入控制。
Gatekeeper 的实际触发时机
它不持续运行,也不扫描后台进程。只有当用户双击一个从互联网下载的.app或.pkg文件时,系统才启动验证流程:
- 检查文件是否带有有效的开发者签名(Developer ID)
- 确认是否已通过 Apple 公证(Notarization),即包含有效票据
- 读取文件的隔离属性(com.apple.quarantine),判断是否来自 Safari、邮件等可信下载渠道
- 若任一条件不满足,弹出“无法验证开发者”警告,由用户决定是否绕过
Gatekeeper 和 XProtect 如何分工协作
两者不是并列的“双实时引擎”,而是分阶段配合:
macOS 微信消息自动化工具。通过 GUI 自动化实现:发送消息给指定联系人、读取聊天内容、监控新消息。适用于需要自动化微信操作的场景,如定时发送、批量回复、消息备份等。依赖 peekaboo 进行屏幕截图和 UI 交互。仅支持 macOS。开源地址:https://github.com/chairmanmia...
- Gatekeeper 负责“进门审查”:拦在执行前,阻止未签名/未公证程序启动
- XProtect 负责“进门后巡查”:应用启动瞬间扫描内存与磁盘行为,匹配 YARA 规则;发现已知恶意模式(如 shlayer 下载器特征)立即终止进程,并调用 MRT 清理残留
- 例如:一个通过公证的合法应用被供应链污染植入恶意代码,Gatekeeper 会放行(因签名和票据仍有效),但 XProtect 可能在它首次加载时识别出异常字符串或网络行为并拦截
为什么用户常误以为 Gatekeeper 在“实时运行”
这种印象多来自以下场景:
- 每次打开新下载的应用都弹窗——其实是每次触发独立验证,非后台常驻
- 系统更新后部分旧应用突然打不开——实为 Apple 撤销了对应开发者证书或公证票据,Gatekeeper 在下次启动时重新校验失败
- 终端粘贴含 bash -c 的命令后被拦截——这是 macOS Tahoe 26.4+ 新增的终端防护功能,不属于 Gatekeeper,而是独立的安全层
真正具备实时能力的是 XProtect
它才是 macOS 中持续工作的恶意软件守卫:
- 后台静默运行,无需用户交互
- 每日自动更新 YARA 签名库(路径:/Library/Apple/System/Library/CoreServices/XProtect.bundle)
- 在三个关键节点扫描:应用首次启动、文件系统变更、签名库更新完成时
- 检测到威胁后直接终止进程,并将恶意文件移入废纸篓(macOS 10.15+)


















