0

コードレス DEXT を作成して、動作中のコードレス KEXT を置き換えました -コードレス KEXT をコードレス DEXT に移行します。いくつかのサイトと GitHub リポジトリを参照してまとめ、他の SO ユーザーの助けを借りました。

SIP をオフにして、開発者モードをオン (systemextensionsctl 開発者オン) にして実行しています。アプリと dext に署名するために、https://github.com/knightsc/USBApp/issues/1で概説されているアドバイスに従っています。

埋め込まれているアプリを実行して拡張機能のアクティベーションを要求すると、その機能成功したようです。しかし、その後、電話がかかってきます -

request:didFailWithError:

ワークキュースレッドの起動時に、OSSystemExtensionRequestDelegate から派生したリクエスト オブジェクトで。エラーは OSSystemExtensionErrorCodeSignatureInvalid です。スレッドは、OSSystemExtensionRequest の作成に使用した dispatch_queue_t に関連していると思います。

Apple ソースを検索すると、OSSystemExtensionErrorCodeSignatureInvalid が資格と署名に関連していることがわかります。systemextensionsctl list を実行すると -

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]

codesign -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>

そこに何か問題があるかどうかはわかりませんが、コード署名スクリプトは正しく実行されているようです。これは、レガシーデバイス用に設定された com.apple.developer.driverkit.transport.usb を含む私の DEXT 資格ファイルです (私の DEXT info.plist の IOKitPersonalities セクションにリストされているのと同じデバイス) -

<?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>

したがって、拡張機能はアクティブで有効になっているようですが、検証中に何かが失敗します。

この問題に関するヘルプや意見をいただければ幸いです。

アップデート:

念のため、システム拡張機能をインストールしない実稼働アプリを実行して、ハードウェアが一致するかどうかを確認しました。ドライバーがインストールされているので、そうしました。ただし、デバイスにアクセスしようとするとクラッシュしました。それはまだ進歩のようです。

4

1 に答える 1