Поэтому, когда я настраиваю свои права в своем проекте приложения для iPhone, я создаю новый Entitlements.plist и устанавливаю для get-task-allow значение false. Но почему? Что представляет этот ключ?
РЕДАКТИРОВАТЬ
Обратите внимание, что это связано с этим вопросом - я обнаружил, что изменение значения этого ключа на true позволило мне установить приложение на моем устройстве)
источник
Возможность отлаживать ваше приложение на iPhone.
источник
Хотя ваш ответ правильный, я просто хочу быть более конкретным, чтобы люди, которые хотят знать, что именно
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 должен касаться памяти вашего приложения и работать с ней для отладки, вам нужно включить это для отладки, но вам нужно отключить это, чтобы распространять ваше приложение, иначе любое приложение сможет получить ваш порт задачи.
источник
Для xcode 4: вам нужно создать файл Entitlements.plist из нового файла. и Targets-> build Settings-> Права на подпись кода, вы должны написать здесь "Entitlements.plist"
Я сделал это, и xcode больше не получает ошибку
источник