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