iPhoneアプリプロジェクトでエンタイトルメントを設定するときに、新しいEntitlements.plistを作成し、get-task-allowの値をfalseに設定します。しかし、なぜ?このキーは何を表していますか?
これは、iPhoneデバイス用のアプリをビルドするときにアプリケーションを検証できなかったというエラーに関連していることに注意してください-このキーの値をtrueに切り替えると、デバイスにアプリをインストールできることがわかりました)
iPhoneアプリプロジェクトでエンタイトルメントを設定するときに、新しいEntitlements.plistを作成し、get-task-allowの値をfalseに設定します。しかし、なぜ?このキーは何を表していますか?
これは、iPhoneデバイス用のアプリをビルドするときにアプリケーションを検証できなかったというエラーに関連していることに注意してください-このキーの値をtrueに切り替えると、デバイスにアプリをインストールできることがわかりました)
ADCのこのスレッドから:
get-task-allowは、アプリケーションにサインインすると、他のプロセス(デバッガーなど)がアプリに接続できるようにします。配布プロファイルではこの値をオフにする必要がありますが、開発プロファイルではこの値をオンにする必要があります(そうしないと、Xcodeを起動してアプリにアタッチできなくなります)。
iPhoneでアプリケーションをデバッグする機能。
あなたの答えget_task_allow
は正しいですが、正確に何を意味するのかを知りたい人ができるように、これについてもっと具体的にしたいと思います。
get_task_allow
は、他のアプリがアプリのタスクポートを取得できるようにする資格です。つまり、他のアプリがtask_for_pid()
アプリのプロセスIDで実行されている場合、アプリのタスクポートを取得して、たとえばメモリ上での書き込みや読み取りなどを実行できるため、パッチを適用したり、あなたのアプリ。
ジェイルブレイクがどのように機能するかを見ると、彼らが最初に行うことの1つは、値付きでtask_for_pid(mach_task_self(),0,&kernel_task);
あるkernel_task
ことに気付くでしょう。これにより、彼らはカーネルのメモリに触れることができます。mach_port_t
0
カーネルエンタイトルメントにはエンタイトルメントがなく、Appleは( )get_task_allow
を実行する可能性さえ排除しているため、パッチが必要です。tfp0
task_for_pid 0
つまり、基本的にXcodeはアプリのメモリにアクセスし、それを使用してデバッグする必要があるため、デバッグのためにこれを有効にする必要がありますが、アプリを配布するにはこれを無効にする必要があります。タスクポート。
xcode 4の場合、新しいファイルからEntitlements.plistファイルを作成する必要があります。およびターゲット->ビルド設定->ここに書き込む必要のあるコード署名エンタイトルメント「Entitlements.plist」
私はこれを行い、xcodeはもうエラーを取得しません