sudo sysctl -w kern.tfp.policy = 1 falha?

1

Eu tentei configurar o kern.tfp.policy para um, mas ele não me deixa fazer isso.

sudo sysctl -w kern.tfp.policy = 1

kern.tfp.policy: 2 sysctl: kern.tfp.policy: argumento inválido

Como posso definir kern.tfp.policy = 1.

Estou fazendo isso para poder usar o mach_inject.

Obrigado

    
por Rahul 31.10.2011 / 12:03

1 resposta

4

Esta opção foi completamente removida do kernel do Mac OS X há cinco anos.

Em XNU 792 (Mac OS X 10.4.x Tiger), ainda existia:

#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 */

No mais recente XNU 1228 (Mac OS X 10.5.x Leopard) foi removido:

#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 */

Como 1 não é mais um valor válido para essa opção, sua chamada falha com essa mensagem de erro.

Parece que não há maneira de contornar isso, então você terá que usar a associação ao grupo procmod .

Como solução alternativa, analise man taskgated . Ele tem um parâmetro que permite a compatibilidade do Tiger, bem como alguns outros.

Accepts the old (Tiger) convention that a process with a primary effective group of procmod or procview is allowed to get task ports. Without this option, this legacy mode is not supported.

Provavelmente, você precisaria alterar o launchd plist e relançar esse serviço. Não tenho certeza se isso é possível com o seu caso de uso.

    
por 01.11.2011 / 10:46