在macOS 10.13.6和更高版本(以及macOS 10.14.6 beta)上加载内核扩展时,我们遇到了问题。 我们有KAUTH kext,我们将其复制到“ / Library / Extensions /” 并调用 KextManagerLoadKextWithURL() API。
在系统偏好设置中,我们单击允许按钮以加载KEXT。
执行这些操作后,不会加载KEXT。因此,我们进行了更多分析,发现了以下发现。
1)“ /库/扩展” 中存在KEXT条目 “ /库/分段扩展/”
2)我们阅读 / private / var / db / SystemPolicyConfiguration / KextPolicy 。 KextPolicy数据库包含: XXXXXXXXXX | com.company.driver.kauthkext | 1 | Company(P)Ltd. | 5 。从第2点起,我们有确凿的证据表明可以加载KEXT。
因此,我们进行了更多分析,发现以下差异。此处 System1 能够加载kext,而 System2 无法加载kext。
System1 :(从较低的操作系统升级到较高的操作系统)
Range(Cells(1, 1), Cells(100, 1)).Select
For Each xCell In Selection
xCell.Value = CDate(xCell.Value)
Next xCell
System2 :(预先安装了10.13.6 OS的新硬件)
System1:~ user$ ls -laO /Library/StagedExtensions/
total 0
drwxr-xr-x@ 3 root wheel restricted 96 Jun 27 15:15 .
drwxr-xr-x+ 62 root wheel sunlnk 1984 Jul 3 12:24 ..
drwxr-xr-x 4 root wheel restricted 128 Jul 4 16:15 Library
以某种方式“ restricted” 标志起着操纵KEXT加载的作用。
注意:我们尚未将任何标志添加到 “ / Library / StagedExtensions” 目录。两台计算机上均启用了SIP(系统完整性保护)
请指导我们为什么KEXT无法在System2上加载。
谢谢。