macOS Kernel Extensions
最后更新于
最后更新于
内核扩展(Kexts)是具有**.kext
扩展名的软件包**,直接加载到macOS内核空间中,为主操作系统提供额外功能。
显然,这是如此强大,以至于加载内核扩展变得复杂。内核扩展必须满足以下要求才能加载:
进入恢复模式时,必须允许加载内核扩展:
内核扩展必须使用内核代码签名证书进行签名,这只能由苹果授予。苹果将详细审查公司和需要的原因。
内核扩展还必须经过公证,苹果将检查其是否包含恶意软件。
然后,root用户可以加载内核扩展,软件包中的文件必须属于root。
在上传过程中,软件包必须准备在受保护的非根位置:/Library/StagedExtensions
(需要com.apple.rootless.storage.KernelExtensionManagement
授权)。
最后,在尝试加载时,用户将收到确认请求,如果接受,必须重新启动计算机才能加载它。
在Catalina中是这样的:有趣的是验证过程发生在用户空间。但是,只有具有**com.apple.private.security.kext-management
授权的应用程序才能请求内核加载扩展**:kextcache
、kextload
、kextutil
、kextd
、syspolicyd
kextutil
cli 启动加载扩展的验证过程
它将通过Mach服务与**kextd
**通信。
kextd
将检查多个内容,如签名
它将与**syspolicyd
通信以检查是否可以加载**扩展。
syspolicyd
将提示用户,如果扩展之前未加载。
syspolicyd
将结果报告给kextd
kextd
最终可以告诉内核加载扩展
如果**kextd
不可用,kextutil
**可以执行相同的检查。