

Apple引入了一些新的安全机制,我们需要启用它们才能运行Crescendo。
确保已将应用移动到你的/Applications目录,否则系统扩展将加载失败。
首次运行时,点击“Start”按钮后,你会被提示批准系统扩展。
注意:我注意到一个问题,系统偏好设置不会显示允许按钮。我猜想这是Apple需要解决的内部问题。点击返回系统偏好设置然后再次导航似乎可以解决这个问题。

你需要为系统扩展启用完全磁盘访问权限。

Crescendo仅兼容 >=10.15.X 和至少 Xcode 10。
该项目包含三个主要组件:
强烈建议在禁用SIP的虚拟机中测试此代码,因为该项目需要端点安全授权、TCC以及在SIP启用时正确签名。
csrutil disable
nvram boot-args="amfi_get_out_of_my_way=0x1"
OSSystemExtensionManager.shared.submitRequest时我们的扩展都会重新加载systemextensionsctl developer on
如果你想签名自己的应用,强烈建议阅读Apple关于系统扩展要求和公证的文档。
签名和授权是一个复杂的任务。
我在本版本中包含了我的.xproj文件以便大家入门。未来我可能会改用新的xcconfig文件,因为相比提交xproj文件,这似乎更为合理。如果你想简单地构建示例CLI应用程序,可以使用Xcode。
为了构建此应用程序并在生产macOS系统上运行,你需要端点安全授权和Apple的开发者证书。
Crescendo框架可以轻松地与任何Swift应用捆绑。未来我可能会迁移到CocoaPods,但我目前对它们不熟悉。
如果你想添加功能或遇到问题,请随时提出问题。如果你想贡献拉取请求,请确保在贡献之前对代码运行swiftlint。
我会根据需要为编译并签名的应用发布版本,并将其包含在Releases标签中。
如果你在生产版Mac上运行,你_不_应该禁用SIP或AMFI。那些说明适用于希望进行代码更改的开发者。
你是否通过点击系统偏好设置 -> 安全性与隐私中的“Allow”按钮启用了系统扩展?如果没有,你将看不到任何事件。
你是否在系统偏好设置 -> 安全性与隐私 -> 隐私标签中启用了完全磁盘访问权限?如果没有,你将看不到任何事件。
如果遇到任何问题,打开Console.app并搜索crescendo或<your_bundle_id>/com.suprhackersteve作为过滤器,这将有助于排查潜在问题。检查CrashReporter以查看扩展是否崩溃或使用fatalError退出也是一个好主意。
如果你想强制卸载系统扩展,有一个名为“Unload System Extension”的菜单项可以卸载它。此操作可能导致奇怪的副作用,只有在你清楚自己在做什么时才执行。
如果你已将某个进程添加到黑名单但它仍然被允许执行,请记住检查_真实完整路径_。仅使用/Applications/Foo.app不足以阻止执行。此外,许多macOS应用是通过xpcproxy启动的。