【问题标题】:Will fork() in iOS app likely be rejected by Apple's vetting process?iOS 应用程序中的 fork() 是否会被 Apple 的审查程序拒绝?
【发布时间】:2013-04-09 05:18:48
【问题描述】:

我正在编写一种机制(在 iOS 应用程序中),通过执​​行 fork(); 检查应用程序沙箱的完整性来检测设备是否越狱。有谁知道尝试此调用是否会违反 App Store 准则?

【问题讨论】:

  • 您已经有一段时间没有问这个问题了。您是否能够通过fork() 将应用程序放入商店?我很好奇。
  • 我也想知道 - 我有一个应用程序,它是 Unix cmdline 实用程序的包装器,如果我可以 fork() 然后调用该实用程序的 main() 会容易得多函数而不是在线程中运行它[该实用程序有很多地方可以调用exit(),因此分叉进程比线程更好]

标签: ios app-store jailbreak


【解决方案1】:

fork() (和其他)不会让你被拒绝;被原版操作系统拒绝的操作在提交时无法复制。 我在 appstore 上有使用 fork() 和 system() 调用来检查越狱环境的应用程序,但没有一个被拒绝:)

【讨论】:

  • 你能告诉我你怎么叫fork吗?通过我的实现,即使在越狱设备上它仍然返回 -1。
【解决方案2】:

您无法在未越狱设备上的 iOS 应用程序中创建新进程(您会收到“不允许操作”等错误),但您可以使用 pthread 库创建新线程。

编辑:但是如果您尝试检测设备是否已越狱,我认为这不会违反商店指南只是“尝试”进行分叉,但这更像是一个法律问题而不是技术问题.

我在应用商店指南中没有发现禁止调用某些低级 API 的内容。这是合乎逻辑的,既然不存在越狱,他们会禁止你做什么你不能做的事情?

我找到的最接近的东西是:

  • 在其指定容器区域之外读取或写入数据的应用程序将被拒绝
  • 以任何方式或形式下载代码的应用都会被拒绝
  • 安装或启动其他可执行代码的应用将被拒绝

【讨论】:

  • 如果您在普通 iOS 设备上调用 fork(),实际上只会得到 -1 的返回码。 (可能在你的日志中类似于Tue Apr 9 03:06:41 unknown sandboxd[84] <Notice>: HelloWorld(80) deny process-fork)OP 肯定想简单地调用它来看看它是否有效。
  • 是的,我一开始误解了这个问题,这就是我编辑回复的原因。
【解决方案3】:

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

根据我的经验,使用NSFileManager 尝试检查文件夹是否存在于/private/{etc,var}/apt (APT 的配置和缓存目录,Cydia 需要它才能工作但在普通 iOS 设备上不存在)的应用程序没有得到被拒绝。

【讨论】:

    猜你喜欢
    • 2017-03-02
    • 2012-04-01
    • 2014-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-01
    • 2011-10-07
    • 1970-01-01
    相关资源
    最近更新 更多