【问题标题】:Copy files to iPhone System Folders将文件复制到 iPhone 系统文件夹
【发布时间】:2010-01-26 13:18:05
【问题描述】:

我正在为越狱的 iPhone 开发。我需要将文件写入(复制)到只有 ROOT 具有写入权限的 iPhone 系统文件夹(/Library/LaunchDaemons)。如何通过我的代码将文件写入此类文件夹。我知道我可以使用 NSFileManager 的 copyItemAtPath:toPath 方法来复制文件,但我不能写,因为我没有权限在这些文件夹上写。

有什么建议吗??

【问题讨论】:

    标签: iphone xcode jailbreak


    【解决方案1】:

    我想我已经找到了这个问题的答案。为了写入系统文件夹,您需要拥有对该文件夹的写入权限。我的应用程序附加了一个守护程序,因此我必须将该守护程序复制到 /System/Library/LaunchDaemons 以使该守护程序工作。因此,当我正在为 JB iphone 开发并且人们将使用 Cydia 安装我的应用程序时,为什么不让 Cydia 将我的应用程序的文件安装到适当的位置。我让 Cydia 将 Daemon 文件复制到 /System/Library/LaunchDaemon 文件夹中。现在的问题是 Cydia 如何知道将文件粘贴到哪里。答案很简单,只需在 .deb 文件中创建正确的文件夹,cydia 就会将位于 .deb 文件中的文件夹中的文件粘贴。

    例如,如果您有一个守护程序,并且您希望 Cydia 将其粘贴到 /System/Library/LaunchDaemons ,请在制作 .deb 之前制作这样的文件结构

    +- MyApp
       +- Applications
          +Myapp.app
       +-DEBIAN
        -control
       +-System
         +-Library
           +-LaunchDaemons
             +- com.myLaunchDaemon.plist
    

    Cydia 在安装您的应用程序时会将 com.myLaunchDaemon.plist 文件粘贴到 System/Library/LaunchDaemons 中,重启即可。

    【讨论】:

    • 谢谢!这正是我所需要的。干杯!
    【解决方案2】:

    您的应用可以作为 root 或 setuid root 运行。

    【讨论】:

    • 以及如何做到这一点?有关如何执行此操作的任何示例??
    • 并期待稍后听到您的程序被用于安装它的 iPhone 上的漏洞利用。
    • 好点。我听说标准问题 iPhoneOS 没有 setuid 应用程序,iphone 的方式是通过 launchd + 一个守护进程。
    • 感谢您的回复。如果我不能以 root 身份运行我的应用程序,那么在私有目录上写入的最佳方法是什么?记住我正在为 JB iphone 开发。
    • 创建一个小型的特权守护进程来为你做这件事。
    【解决方案3】:

    与其以 root 身份运行整个应用程序,不如设计一个小型帮助工具来安装文件。然后只有那个帮助工具必须以 root 身份运行。

    有关 SUID 二进制文件的更多信息,请查看http://en.wikipedia.org/wiki/Setuid 作为一个好的开始。

    【讨论】:

    • 如果您这样做,您应该使帮助应用程序非常受限。它不应该能够将任何文件写入任何目录,否则有人会想出如何利用它来接管安装了您的程序的 iPhone。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-11
    • 2015-03-28
    • 2018-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-27
    相关资源
    最近更新 更多