Что делает функция 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 не получил больше ошибок