【问题标题】:Gain root acces in iOS and launch Daemon在 iOS 中获得 root 访问权限并启动 Daemon
【发布时间】:2011-05-09 20:55:40
【问题描述】:

我是一名 iPhone 开发人员,现在我正在制作一个需要运行命令的应用程序(例如“launchctl”) 我可以启动的唯一方法是使用 root 权限,但我不知道如何获得 root 权限。

我想用 System("launchctl....") 调用它还是有其他方法?

提前致谢;)

【问题讨论】:

  • 您知道在应用商店中分发的应用根本无法做到这一点吗?如果你想越狱分发,那是另一回事,但听起来你正在看应用商店......
  • 不,不,我想为 Cydia 制作一个应用程序(越狱设备)

标签: objective-c ios jailbreak


【解决方案1】:

如果您要在 App Store 中分发它,您将无法获得 root 权限。但是,如果您正在为越狱设备开发此功能,则可以获得 root 访问权限。

【讨论】:

  • 我正在为越狱设备开发
  • 在这种情况下,要让应用程序以 root 身份运行,您需要使用 ldidchmod 将二进制代码伪造为 755,并确保应用程序安装在设备上的 /Applications 中.
  • 如果我这样做,我将能够以 root 身份运行命令 (system("launchctl.."))?
  • 你知道我在哪里可以获得教程吗?
  • 真的不会认为这是一个答案。更多评论。
【解决方案2】:

我曾经构建了一个越狱应用程序,试图做类似的事情。我没有使用launchctl,但我正在使用system() 发出呼叫。

我发现即使我让我的应用程序以用户 rootwhich requires more than what edc1591 outlined in his comment above 的身份运行,系统调用仍然会以用户 运行你传递给它的任何命令(例如 launchctl) >移动权限。 (旁白:我认为原因可能与to this issue有关)。

如果你想这样做,我发现了一种相当复杂的方法。 See that answer here.

【讨论】:

    【解决方案3】:

    首先,使用system(); 是一种C 方法,对于执行这样的命令根本不是很可靠(我从经验中知道)。 您想要做的是将 NSTask.h 文件从foundation.framework 复制到您的项目窗口中并使用它。找到它的方法是为mac打开一个新项目,然后单击foundation.framework上的在finder中显示,然后复制它。 (确保删除顶部附近检查您是否有 Mac OS 10.6 或更高版本的行)

    然后尝试运行它。如果它仍然没有正确的权限,请尝试查看setuid();,但除此之外,我不知道它是如何完成的。 或许你可以联系 iFile 的开发者,他会知道如何...

    【讨论】:

      【解决方案4】:

      不幸的是,没有 Apple 认可的方法来执行此操作。换句话说,需要 root 访问权限的应用程序将不会被批准在 App Store 中使用。 Apple 可能会授予例外,但这是非常、非常、 不太可能

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-08
        • 2015-11-06
        • 2012-05-30
        • 1970-01-01
        • 2011-12-12
        • 2013-05-29
        • 2011-06-21
        相关资源
        最近更新 更多