Я создал DEXT без кода для замены работающего KEXT без кода - Миграция KEXT без кода на DEXT без кода . Я сослался на несколько сайтов и репозиториев GitHub, чтобы собрать его вместе, и получил помощь от других пользователей SO.
Я работаю с отключенным SIP, включен режим разработчика (разработчик systemextensionsctl включен). Я следую приведенному здесь совету https://github.com/knightsc/USBApp/issues/1 для подписи приложения и декста.
Когда я запускаю приложение, в которое оно встроено, и запрашиваю активацию расширения, эта функция кажется успешным. Однако затем я получаю вызов -
request:didFailWithError:
в моем объекте запроса, производном от OSSystemExtensionRequestDelegate, когда запускается поток рабочей очереди. Ошибка - OSSystemExtensionErrorCodeSignatureInvalid. Я предполагаю, что этот поток связан с dispatch_queue_t, который я использовал для создания OSSystemExtensionRequest.
Из поиска по источникам Apple я понимаю, что OSSystemExtensionErrorCodeSignatureInvalid связано с правами и подписью. Когда я запускаю список systemextensionsctl, я получаю -
1 extension(s)
--- com.apple.system_extension.driver_extension
enabled active teamID bundleID (version) name [state]
* * <REDACTED> Home.MyUsbDrver (1.0/1) Home.MyUsbDrver [activated enabled]
Когда я запускаю codeign -d -vvv --entitlements: -, я получаю -
Executable=/Users/.../TestDequeueApp.app/Contents/MacOS/TestDequeueApp
Identifier=Home.TestDequeueApp
Format=app bundle with Mach-O thin (x86_64)
CodeDirectory v=20500 size=1055 flags=0x10000(runtime) hashes=24+5 location=embedded
Hash type=sha256 size=32
CandidateCDHash sha256=HASH
CandidateCDHashFull sha256=LONG HASH
Hash choices=sha256
CMSDigest=DIGEST
CMSDigestType=2
CDHash=HASH
Signature size=4745
Authority=Apple Development: MY Apple ID STUFF
Authority=Apple Worldwide Developer Relations Certification Authority
Authority=Apple Root CA
Signed Time=Aug 6, 2020 at 10:51:41 AM
Info.plist entries=23
TeamIdentifier=TEAM ID
Runtime Version=10.15.6
Sealed Resources version=2 rules=13 files=7
Internal requirements count=1 size=188
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.files.user-selected.read-only</key>
<true/>
<key>com.apple.developer.system-extension.install</key>
<true/>
<key>com.apple.developer.system-extension.uninstall</key>
<true/>
</dict>
</plist>
Не уверен, что вижу что-то не так и скрипт подписи кода, кажется, работает правильно. Вот мой файл прав DEXT с com.apple.developer.driverkit.transport.usb, установленным для устаревшего устройства (то же устройство, которое указано в разделе IOKitPersonalities моего DEXT info.plist) -
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.developer.driverkit</key>
<true/>
<key>com.apple.developer.driverkit.transport.usb</key>
<array>
<dict>
<key>idVendor</key>
<integer>5843</integer>
<key>idProduct</key>
<integer>33</integer>
</dict>
</array>
<key>com.apple.security.app-sandbox</key>
<true/>
</dict>
</plist>
Итак, это Кажется, что расширение активно и включено, но что-то не получается во время проверки.
Любая помощь или информация по этой проблеме приветствуются.
Обновление:
Просто для улыбки, Я запустил свое производственное приложение, которое не устанавливает расширение системы, чтобы проверить, приведет ли оно к совпадению моего оборудования. Поскольку драйвер был установлен, так и было. Однако при попытке доступа к устройству я получил ошибку sh. Это все еще кажется прогрессом.