在iOS应用中使用fork()函数是否容易被苹果的审核流程拒绝?

11
我正在编写一种机制(在iOS应用中),通过执行fork();来检测设备是否被越狱,以检查应用沙盒的完整性。 有人知道尝试调用这个功能是否会违反App Store的指导方针吗?

1
这已经有一段时间了,你是否能够使用 fork() 将应用程序放入商店?我很好奇。 - mpontillo
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Alnitak
3个回答

10

fork()(和其他)不会导致您被拒绝;由于原始操作系统的限制,在提交期间无法再现被拒绝的操作。

我在App Store上有应用程序,它们使用fork()和system()调用来检查越狱环境,但它们都没有因此而被拒绝 :)


你能告诉我你是如何调用fork的吗?在我的实现中,即使在越狱设备上仍然返回-1。 - Paweł Zgoda-Ferchmin

5
在未越狱的iOS应用程序中,您无法创建新进程(会收到“Operation not permitted”等错误),但是您可以使用pthread库创建新线程。
编辑:但如果您正在尝试检测设备是否越狱,我认为这不会违反商店准则,只是'尝试'做一个分叉,但这更多是法律问题而不是技术问题。
我在应用商店指南中找不到禁止调用某些低级别API的内容。这是合乎逻辑的,因为越狱不存在,他们为什么要禁止您做一些您无法做的事情?
我发现最接近的东西是:
- 阅读或写入其指定容器区域之外数据的应用将被拒绝 - 下载任何形式的代码的应用将被拒绝 - 安装或启动其他可执行代码的应用将被拒绝

2
如果在普通的iOS设备上调用fork(),实际上只会得到一个返回值为“-1”的返回代码(还可能在日志中看到类似于“Tue Apr 9 03:06:41 unknown sandboxd [84] <Notice>: HelloWorld(80)deny process-fork”的内容)。 OP肯定是想简单地调用这个函数来查看它是否有效。 - Nate
是的,一开始我误解了问题,所以我编辑了我的回答。 - zakinster

0

fork(2)可能会导致您被拒绝。如果您的目的是检查设备是否越狱,可以检查APT的存在。

根据我的经验,使用NSFileManager检查位于/private/{etc,var}/apt(APT的配置和缓存目录,Cydia需要但在原始iOS设备上不存在)的文件夹是否存在不会被拒绝。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接