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_allow
es 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_task
es una mach_port_t
con el valor 0
, por lo que son capaces de tocar la memoria del kernel.
Como los derechos del kernel no tienen get_task_allow
derechos, 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.