Twoja odpowiedź jest prawidłowa, ale chcę być bardziej szczegółowy, aby ludzie, którzy chcą wiedzieć, co dokładnie get_task_allow
oznacza, mogli.
get_task_allow
to 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_task
jest to mach_port_t
z wartością 0
, dzięki czemu są w stanie dotknąć pamięci jądra.
Ponieważ uprawnienia jądra nie mają get_task_allow
uprawnień, 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ń.