2010-01-26 63 views
0

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

任何建议??

+0

有人曾试过这?? – raziiq 2010-02-06 09:55:54

回答

1

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

例如,如果你有一个守护进程并希望苹果蠹将其粘贴到/ System /库/ LaunchDaemons,作出这样的文件结构制作一个.deb

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

Cydia中安装时您的应用程序之前,将将com.myLaunchDaemon.plist文件粘贴到System/Library/LaunchDaemons中,重新启动,然后就可以开始了。

+0

谢谢!这正是我所需要的。干杯! – 2013-05-26 06:27:38

0

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

+0

以及如何做到这一点?有关如何做到这一点的任何示例? – raziiq 2010-01-26 13:23:55

+1

并期望稍后能够听到您的程序被用于安装它的iPhone上的漏洞攻击。 – Darron 2010-01-26 14:10:57

+0

好点。我听说标准问题iPhoneOS没有setuid应用程序,iPhone的方式是通过launchd +守护进程。 – 2010-01-26 14:33:14

0

而不是运行你的整个应用程序的根是更好的设计有一个小的辅助工具,将安装文件。然后只有那个帮助工具必须以root身份运行。

有关的SUID二进制文件的详细信息检查http://en.wikipedia.org/wiki/Setuid作为一个良好的开端。

+0

如果你这样做,你应该使*助手应用*非常有限。它不应该能够将任何文件写入任何目录,或者有人会弄清楚如何利用它来接管安装了程序的iPhone。 – Darron 2010-01-26 14:09:03

相关问题