MacOS High Sierra KEXT Loading - 有没有办法取消用户批准?

Hir*_*ori 7 macos kernel-extension macos-high-sierra

正如某些MacOS开发人员所知,Apple实施了Secure Kernel Extension Loading.

用户可以通过单击Approve按钮批准第三方KEXT Security and Privacy.但是,一旦KEXT获得批准,是否有任何取消批准的方法?

想象一下,用KEXT加载测试应用程序的情况等.

如果除了干净安装之外别无选择,那么测试应用程序非常困难.

Mik*_*aev 9

有关批准的信息存储在sqlite3数据库中:

/var/db/SystemPolicyConfiguration/KextPolicy
Run Code Online (Sandbox Code Playgroud)

你感兴趣的表是:kext_policykext_load_history_v3.例如,以下是查看数据和表模式的方法:

sqlite3 /var/db/SystemPolicyConfiguration/KextPolicy

sqlite> select * from kext_policy;
54GTJ2AU36|com.joshuawise.kexts.HoRNDIS|1|Joshua Wise|1

sqlite> .schema kext_policy
CREATE TABLE kext_policy ( team_id TEXT, bundle_id TEXT, allowed BOOLEAN, developer_name TEXT, flags INTEGER, PRIMARY KEY (team_id, bundle_id) );
Run Code Online (Sandbox Code Playgroud)

删除批准很简单,因为系统完整性保护不允许您修改数据库.因此,您需要重新启动到恢复分区或其他MacOS安装,然后cd到卷的根目录,并运行这些命令(替换为您的team_id,或使用其他条件):

usr/bin/sqlite3 var/db/SystemPolicyConfiguration/KextPolicy
delete from kext_load_history_v3 where team_id='54GTJ2AU36';
delete from kext_policy where team_id='54GTJ2AU36';
.quit 
Run Code Online (Sandbox Code Playgroud)