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