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