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

Cod*_*eef 88 iphone xcode cocoa-touch

所以,当我在我的iPhone应用程序的项目建立了我的权利,我创建了一个新的Entitlements.plist,并设置获取任务,允许值为false.但为什么?这个键代表什么?

编辑

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

Cod*_*eef 154

来自ADC的这个帖子:

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

  • 那么需要有两个Entitlements.plist文件的项目,其中一个将此值设置为YES以指向调试配置文件,另一个指定NO,定位分发配置文件? (2认同)
  • 没关系,解决了我自己的问题。如果您将 Entitlements.plist 排除在 Debug 构建设置之外,则没有问题。 (2认同)

cde*_*osa 13

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


iAl*_*x11 12

虽然您的回答是正确的,但我只是想更具体地说明这一点,以便那些想知道究竟是什么get_task_allow意思的人可以。

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

如果你看看怎么越狱的作品,你会发现他们做的第一件事就是让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 需要接触你的应用程序的内存并使用它来调试它,你需要启用它来调试,但你需要禁用它来分发你的应用程序,否则任何应用程序都可以得到你的任务端口。