回答:
ADCのこのスレッドから:
get-task-allowは、アプリケーションにサインインすると、他のプロセス(デバッガーなど)をアプリに接続できます。ディストリビューションプロファイルではこの値をオフにする必要がありますが、開発プロファイルではこの値をオンにする必要があります(そうしないと、Xcodeを起動してアプリにアタッチすることはできません)。
iPhoneでアプリケーションをデバッグする機能。
あなたの答えは正しいですが、正確に何をget_task_allow
意味するのか知りたい人ができるように、私はこれについてより具体的にしたいだけです。
get_task_allow
他のアプリがアプリのタスクポートを取得できるようにする資格です。これは、他のアプリがtask_for_pid()
アプリプロセスIDで実行されている場合、アプリのタスクポートを取得するため、メモリ上での書き込みや読み取りなどを実行できるため、パッチを適用して動作を変更できることを意味しますあなたのアプリ。
あなたはどのように脱獄の作品を見てみましょう場合、あなたは彼らが最初のものの一つが取得され気づくtask_for_pid(mach_task_self(),0,&kernel_task);
ことがあることkernel_task
であるmach_port_t
値を持つ0
彼らは、カーネルのメモリに触れることができますので、。
カーネルの資格には資格がなくget_task_allow
、Appleはtfp0
(task_for_pid 0
)を実行する可能性さえ排除しているため、パッチが必要です。
したがって、基本的にXcodeはアプリのメモリに触れてそれを操作してデバッグする必要があるので、デバッグのためにこれを有効にする必要がありますが、アプリを配布するためにこれを無効にする必要があります。タスクポート。