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