109 votes

Que fait get-task-allow dans Xcode ?

Lorsque je configure mes droits dans mon projet d'application iPhone, je crée un nouveau fichier Entitlements.plist et je fixe la valeur de get-task-allow à false. Mais pourquoi ? Que représente cette clé ?

A noter que ceci est lié à L'application n'a pas pu être vérifiée lors de la création de l'application pour l'iPhone - J'ai constaté que le fait de faire passer la valeur de cette clé à true m'a permis d'installer l'application sur mon appareil.)

180voto

Codebeef Points 17084

En ce fil sur l'ADC :

get-task-allow, lorsqu'il est signé dans une application, permet à d'autres processus (comme le débogueur) de s'attacher à votre application. Les profils de distribution exigent que cette valeur soit désactivée, tandis que les profils de développement exigent que cette valeur soit activée (sinon Xcode ne serait jamais en mesure de lancer et de s'attacher à votre application).

2 votes

Les projets doivent-ils donc avoir deux fichiers Entitlements.plist, l'un dans lequel cette valeur est définie sur YES et qui cible les profils Debug, et l'autre dans lequel cette valeur est définie sur NO et qui cible les profils Distribution ?

2 votes

Je n'ai rien fait, j'ai résolu ma propre question. Si vous ne tenez pas compte du fichier Entitlements.plist dans vos paramètres de construction Debug, vous n'aurez pas de problème.

0 votes

Mais les profils des développeurs ne sont pas exiger Cette valeur doit être activée. Ils s'exécuteront quand même, mais vous ne pourrez pas attacher le débogueur.

19voto

iAlex11 Points 1299

Alors que votre répondre est correcte, je veux juste être plus précis sur ce point pour que les gens qui veulent savoir ce que fait exactement le get_task_allow signifie, peut.

get_task_allow est un droit qui permet à d'autres applications d'obtenir le portage de tâches de votre application. Cela signifie que si une autre application exécute task_for_pid() avec l'ID du processus de votre application, ils obtiendront le port de tâche de votre application afin qu'ils puissent faire des choses comme, par exemple, écrire et lire des choses sur la mémoire, et donc être en mesure de patcher des choses et de modifier le comportement de votre application.

Si vous regardez comment fonctionne un jailbreak, vous remarquerez que l'une des premières choses qu'il fait est d'obtenir des informations sur le fonctionnement de l'ordinateur. task_for_pid(mach_task_self(),0,&kernel_task); étant donné que kernel_task est un mach_port_t avec valeur 0 Ils sont donc en mesure de toucher la mémoire du noyau.

Comme les droits au noyau n'ont pas get_task_allow et Apple a même supprimé la possibilité de le faire. tfp0 ( task_for_pid 0 ), ils ont besoin d'un correctif.

Ainsi, comme Xcode a besoin de toucher la mémoire de votre application et de travailler avec elle pour la déboguer, vous devrez activer cette fonction pour le débogage, mais vous devrez la désactiver pour distribuer votre application, sinon n'importe quelle application sera capable d'obtenir votre port de tâche.

14voto

cdespinosa Points 14277

La possibilité de déboguer votre application sur l'iPhone.

1 votes

Intéressant ! Si c'est tout ce qu'il fait, je me demande pourquoi le fait de passer la valeur à false m'empêche d'installer l'application sur mon appareil ? (Question connexe de l'OS : stackoverflow.com/questions/997884/ )

0 votes

C'est ce qu'il fait... mais qu'est-ce qu'il fait réellement pour vous permettre de faire cela ?

1 votes

Cette réponse pourrait être grandement améliorée si elle contenait plus d'informations comme celles de Codebeef.

-8voto

Yiğit Points 89

Pour xcode 4:vous devez créer le fichier Entitlements.plist à partir d'un nouveau fichier. et Targets->build Settings->Code Signing Entitlements vous devez écrire ici "Entitlements.plist".

J'ai fait cela et xcode n'obtient plus d'erreur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X