Si bien su respuesta es correcta, solo quiero ser más específico sobre esto para que las personas que quieran saber qué significa exactamente get_task_allow, puedan.
get_task_allowes un derecho que permite a otras aplicaciones obtener el puerto de tareas de su aplicación. Esto significa que si cualquier otra aplicación se ejecuta task_for_pid()con su ID de proceso de aplicación, obtendrán el puerto de tareas de su aplicación para que puedan hacer cosas como, por ejemplo, escribir y leer cosas en la memoria, por lo tanto, podrán parchear cosas y modificar el comportamiento de tu aplicación.
Si se echa un vistazo a cómo funciona una fuga de la cárcel, se dará cuenta de una de las primeras cosas que hacen es conseguir task_for_pid(mach_task_self(),0,&kernel_task);siendo que kernel_taskes una mach_port_tcon el valor 0, por lo que son capaces de tocar la memoria del kernel.
Como los derechos del kernel no tienen get_task_allowderechos, y Apple incluso ha eliminado la posibilidad de hacer tfp0( task_for_pid 0), necesitan un parche.
Entonces, básicamente, como Xcode necesita tocar la memoria de su aplicación y trabajar con ella para depurarla, deberá habilitar esto para la depuración, pero deberá deshabilitar esto para distribuir su aplicación o, de lo contrario, cualquier aplicación podría obtener su puerto de tareas.