1

Я попытался настроить kern.tfp.policy на один, но это не позволяет мне сделать это.

sudo sysctl -w kern.tfp.policy = 1

kern.tfp.policy: 2 sysctl: kern.tfp.policy: неверный аргумент

Как я могу установить kern.tfp.policy = 1.

Я делаю это для того, чтобы иметь возможность использовать mach_inject.

Спасибо

1 ответ1

4

Эта опция была полностью удалена из ядра Mac OS X пять лет назад.

В XNU 792 (Mac OS X 10.4.x Tiger) он все еще существовал:

#define KERN_TFP_POLICY_DENY        0   /* Deny Mode: None allowed except privileged */
#define KERN_TFP_POLICY_PERMISSIVE  1   /* Permissive Mode: related ones allowed or privileged */
#define KERN_TFP_POLICY_RESTRICTED  2   /* Restricted Mode: privileged or setgid and realted */

В более позднем XNU 1228 (Mac OS X 10.5.x Leopard) он был удален:

#define KERN_TFP_POLICY_DENY        0   /* Deny Mode: None allowed except privileged */
#define KERN_TFP_POLICY_DEFAULT     2   /* Default  Mode: related ones allowed and upcall authentication */

Поскольку 1 больше не является допустимым значением для этой опции, ваш вызов завершается с этим сообщением об ошибке.

Кажется, больше нет способа обойти это, поэтому вам придется использовать членство в группе procmod .


В качестве обходного пути, посмотрите на man taskgated . Он имеет параметр, который позволяет совместимость с Tiger, а также некоторые другие.

Принимает старое (Tiger) соглашение, что процессу с основной эффективной группой procmod или procview разрешено получать порты задач. Без этой опции этот устаревший режим не поддерживается.

Вам, вероятно, нужно изменить plist и перезапустить этот сервис. Не уверен, что это возможно с вашим вариантом использования.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .