get-task-allow在Xcode中做了什么?

时间:2009-06-16 18:08:31

标签: iphone cocoa-touch xcode

因此,当我在iPhone应用程序项目中设置权利时,我创建了一个新的Entitlements.plist,并将get-task-allow的值设置为false。但为什么?这个键代表什么?

修改

请注意,这与this question有关 - 我发现将此键的值翻转为true允许我在我的设备上安装该应用程序)

4 个答案:

答案 0 :(得分:147)

来自this thread on ADC

get-task-allow在登录应用程序时,允许其他进程(如调试器)附加到您的应用程序。分发配置文件要求关闭此值,而开发配置文件需要打开此值(否则Xcode将无法启动并附加到您的应用程序)。

答案 1 :(得分:12)

能够在iPhone上调试您的应用程序。

答案 2 :(得分:0)

虽然您的answer是正确的,但我只是想对此更加具体,以便那些想知道get_task_allow的确切含义的人可以。

get_task_allow是一项权利,它允许其他应用程序获取您应用程序的任务端口。这意味着,如果任何其他应用程序使用您的应用程序进程ID运行task_for_pid(),它们将获得应用程序的任务端口,因此它们可以执行诸如在内存上写入和读取内容之类的操作,从而能够对它们进行修补并修改您的应用的行为。

如果您了解越狱的工作原理,您会发现他们做的第一件事就是得到task_for_pid(mach_task_self(),0,&kernel_task);,因为kernel_task是一个mach_port_t,值{{ 1}},这样他们就可以触摸内核的内存。

由于内核权利没有0权利,而且Apple甚至取消了进行get_task_allowtfp0)的可能性,因此它们需要补丁。

因此,基本上,由于Xcode需要触摸应用程序的内存并对其进行调试,因此您需要启用它进行调试,但是您需要禁用此功能以分发您的应用程序,否则任何应用程序都将能够获取任务端口。

答案 3 :(得分:-6)

对于xcode 4:您必须从新文件创建Entitlements.plist文件。和 目标 - >构建设置 - >代码签名权利,你必须在这里写“Entitlements.plist”

我这样做了,xcode再也没有错误