
Crescendo — это основанный на Swift просмотрщик событий в реальном времени для macOS. Он использует Endpoint Security Framework от Apple.


Apple представила несколько новых механизмов безопасности, которые нам необходимо включить для работы Crescendo.
Убедитесь, что вы переместили приложение в каталог /Applications, иначе системное расширение не загрузится.
При первом запуске вам будет предложено одобрить системное расширение после нажатия кнопки «Start».
ПРИМЕЧАНИЕ: Я заметил, что есть проблема, из-за которой в Системных настройках не отображается кнопка разрешения. Полагаю, это какая-то внутренняя проблема Apple, которую нужно решить. Возврат к Системным настройкам и повторный переход, похоже, исправляет эту проблему.

Вам нужно будет предоставить полный доступ к диску для системного расширения.

Crescendo совместимо только с >=10.15.X и как минимум Xcode 10.
Этот проект состоит из трех основных компонентов:
Настоятельно рекомендуется тестировать этот код на виртуальной машине с отключенным SIP, поскольку для этого проекта требуется право endpoint-security, TCC и правильная подпись, если SIP включен.
csrutil disable
nvram boot-args="amfi_get_out_of_my_way=0x1"
OSSystemExtensionManager.shared.submitRequestsystemextensionsctl developer on
Если вы хотите подписать свое собственное приложение, настоятельно рекомендуется прочитать документацию Apple по требованиям System Extension и Notarization.
Подписание и разрешения — нетривиальная задача.
Я включил свой файл .xproj в этот выпуск, чтобы помочь вам начать. В будущем я, вероятно, перейду на использование нового файла xcconfig, так как этот подход кажется гораздо более разумным, чем фиксация файлов xproj. Если вы хотите просто собрать пример приложения командной строки, вы можете сделать это с помощью Xcode.
Чтобы собрать это приложение и запустить его на производственной системе macOS, вам понадобится право endpoint-security и сертификат разработчика от Apple.
Framework Crescendo можно легко связать с любым приложением Swift. В будущем я, возможно, перейду на CocoaPods, но сейчас я с ними не знаком.
Пожалуйста, не стесняйтесь создавать issue, если хотите увидеть добавление функции или столкнулись с проблемой. Если вы хотите внести pull request, убедитесь, что вы запустили swiftlint над своим кодом перед внесением вклада.
Я буду выпускать релизы для скомпилированного и подписанного приложения и включать их во вкладку Releases по мере необходимости.
Если вы работаете на производственном Mac, вам НЕ следует отключать SIP или AMFI. Эти инструкции предназначены для разработчиков, желающих внести изменения в код.
Вы включили системное расширение, нажав кнопку «Allow» в System Preferences -> Security & Privacy? Если нет, вы не увидите никаких событий.
Вы предоставили полный доступ к диску в System Preferences -> Security & Privacy -> Privacy Tab? Если нет, вы не увидите никаких событий.
Если у вас возникли проблемы, откройте Console.app и выполните поиск по фильтру crescendo или <your_bundle_id>/com.suprhackersteve, это должно помочь вам в устранении возможных неполадок. Также стоит проверить CrashReporter и убедиться, что расширение не упало и не завершилось с fatalError.
Если вы хотите принудительно выгрузить системное расширение, есть пункт меню «Unload System Extension», который выгрузит его. Это действие может привести к странным побочным эффектам, делайте это, только если знаете, что делаете.
Если вы добавили процесс в черный список, но он все равно разрешен к выполнению, не забудьте проверить реальный полный путь. Простое использование /Applications/Foo.app не предотвратит выполнение. Также многие приложения macOS запускаются через xpcproxy.