Копирование файлов в системные папки iPhone
Вопрос
Я занимаюсь разработкой для взломанного iPhone.Мне нужно записать (скопировать) файл в системные папки iPhone (/Library/LaunchDaemons), к которым только ROOT имеет доступ на запись.Как я могу записать файл в такие папки через свой код.Я знаю, что могу использовать метод copyItemAtPath:toPath NSFileManager для копирования файла, но я не могу писать, поскольку у меня нет разрешения на запись в таких папках.
Какие-либо предложения??
Решение
думаю, я нашел ответ на этот вопрос.Для записи в системные папки вам необходимо иметь разрешение на запись в эту папку.К моему приложению был подключен демон, поэтому мне пришлось скопировать его в /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, перезагрузится, и все готово.
Другие советы
Ваше приложение может работать как root или setuid root.
Вместо того, чтобы запускать все приложение с правами root, гораздо лучше иметь небольшой вспомогательный инструмент, который будет устанавливать файлы.Тогда только этот вспомогательный инструмент должен запускаться от имени пользователя root.
Для получения дополнительной информации о двоичных файлах SUID проверьте http://en.wikipedia.org/wiki/Setuid как хорошее начало.