Twoja odpowiedź jest prawidłowa, ale chcę być bardziej szczegółowy, aby ludzie, którzy chcą wiedzieć, co dokładnie get_task_allowoznacza, mogli.
get_task_allowto uprawnienie, które umożliwia innym aplikacjom uzyskiwanie portu zadań Twojej aplikacji. Oznacza to, że jeśli jakakolwiek inna aplikacja działa task_for_pid()z Twoim identyfikatorem procesu aplikacji, otrzymają port zadań Twojej aplikacji, aby mogli na przykład pisać i czytać rzeczy w pamięci, dzięki czemu będą mogli łatać rzeczy i modyfikować zachowanie Twoja aplikacja.
Jeśli spojrzysz na to, jak działa jailbreak, zauważysz, że jedną z pierwszych rzeczy, które robią, jest task_for_pid(mach_task_self(),0,&kernel_task);to, że kernel_taskjest to mach_port_tz wartością 0, dzięki czemu są w stanie dotknąć pamięci jądra.
Ponieważ uprawnienia jądra nie mają get_task_allowuprawnień, a firma Apple usunęła nawet możliwość wykonywania tfp0( task_for_pid 0), potrzebna jest poprawka.
Zasadniczo, ponieważ Xcode musi dotknąć pamięci Twojej aplikacji i pracować z nią, aby ją debugować, musisz włączyć to do debugowania, ale musisz to wyłączyć, aby rozpowszechniać swoją aplikację, w przeciwnym razie każda aplikacja byłaby w stanie uzyskać port zadań.