在Xcode中允许get-task-allow做什么?

问题描述 投票:87回答:4

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

编辑

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

iphone cocoa-touch xcode
4个回答
152
投票

来自this thread on ADC

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


13
投票

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


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_t0,因此他们可以触摸内核的内存。

由于内核权利没有get_task_allow权利,并且Apple甚至删除了执行tfp0task_for_pid 0)的可能性,因此需要修补程序。

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


-6
投票

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

我做到了,xcode不再出现错误

© www.soinside.com 2019 - 2024. All rights reserved.