Что делает функция get-task-allow в Xcode?

Поэтому, когда я настраиваю свои права в моем проекте приложений iPhone, я создаю новый Entitlements.plist и устанавливаю значение get-task-allow для false. Но почему? Что представляет этот ключ?

ИЗМЕНИТЬ

Обратите внимание, что это связано с этим вопросом - я обнаружил, что отображение значения этого ключа в true позволило мне установить приложение на моем устройстве)

Ответ 1

От этот поток в ADC:

get-task-allow, при входе в приложение, позволяет другим процессам (например, отладчику) подключаться к вашему приложению. В профилях распространения требуется, чтобы это значение было отключено, в то время как профили разработки требуют включения этого значения (в противном случае Xcode никогда не сможет запускаться и подключаться к вашему приложению).

Ответ 2

Возможность отладки вашего приложения на iPhone.

Ответ 3

Хотя ваш ответ правильный, я просто хочу более конкретно рассказать об этом, чтобы люди, которые хотят знать, что именно означает get_task_allow, могут.

get_task_allow - это право, которое позволяет другим приложениям получать порт задачи вашего приложения. Это означает, что если любое другое приложение запускает task_for_pid() с идентификатором процесса вашего приложения, они получат порт задачи вашего приложения, чтобы они могли выполнять такие вещи, как, например, запись и чтение данных в памяти, и, следовательно, возможность исправления и изменения поведение вашего приложения.

Если вы посмотрите на то, как работает джейлбрейк, вы заметите, что первое, что они делают, это получают 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 должен коснуться памяти вашего приложения и работать с ней для отладки, вам нужно включить это для отладки, но вам нужно отключить это, чтобы распространять ваше приложение, иначе любое приложение сможет получить ваше порт задачи.

Ответ 4

Для xcode 4: вам нужно создать файл Entitlements.plist из нового файла. а также Targets- > build Settings- > Code Signing Права, которые вы должны здесь написать "Entitlements.plist"

Я сделал это, и xcode не получил больше ошибок