99

iPhoneアプリプロジェクトでエンタイトルメントを設定するときに、新しいEntitlements.plistを作成し、get-task-allowの値をfalseに設定します。しかし、なぜ?このキーは何を表していますか?

これは、iPhoneデバイス用のアプリをビルドするときにアプリケーションを検証できなかったというエラーに関連していることに注意してください-このキーの値をtrueに切り替えると、デバイスにアプリをインストールできることがわかりました)

4

4 に答える 4

170

ADCのこのスレッドから:

get-task-allowは、アプリケーションにサインインすると、他のプロセス(デバッガーなど)がアプリに接続できるようにします。配布プロファイルではこの値をオフにする必要がありますが、開発プロファイルではこの値をオンにする必要があります(そうしないと、Xcodeを起動してアプリにアタッチできなくなります)。

于 2009-06-22T10:34:28.960 に答える
13

iPhoneでアプリケーションをデバッグする機能。

于 2009-06-17T17:25:35.113 に答える
13

あなたの答えget_task_allowは正しいですが、正確に何を意味するのかを知りたい人ができるように、これについてもっと具体的にしたいと思います。

get_task_allowは、他のアプリがアプリのタスクポートを取得できるようにする資格です。つまり、他のアプリがtask_for_pid()アプリのプロセスIDで実行されている場合、アプリのタスクポートを取得して、たとえばメモリ上での書き込みや読み取りなどを実行できるため、パッチを適用したり、あなたのアプリ。

ジェイルブレイクがどのように機能するかを見ると、彼らが最初に行うことの1つは、値付きでtask_for_pid(mach_task_self(),0,&kernel_task);あるkernel_taskことに気付くでしょう。これにより、彼らはカーネルのメモリに触れることができます。mach_port_t0

カーネルエンタイトルメントにはエンタイトルメントがなく、Appleは( )get_task_allowを実行する可能性さえ排除しているため、パッチが必要です。tfp0task_for_pid 0

つまり、基本的にXcodeはアプリのメモリにアクセスし、それを使用してデバッグする必要があるため、デバッグのためにこれを有効にする必要がありますが、アプリを配布するにはこれを無効にする必要があります。タスクポート。

于 2019-10-10T17:40:20.167 に答える
-8

xcode 4の場合、新しいファイルからEntitlements.plistファイルを作成する必要があります。およびターゲット->ビルド設定->ここに書き込む必要のあるコード署名エンタイトルメント「Entitlements.plist」

私はこれを行い、xcodeはもうエラーを取得しません

于 2012-01-09T09:58:15.407 に答える