Получение root-прав на iOS для NSFileManager (Jailbreak)
Я пытаюсь записать файл в корневой раздел устройства. Это приложение для джейлбрейка, поэтому оно установлено в /Applications. При записи в корневую файловую систему используется NSFileManager
запись завершается с ошибкой "Отказано в доступе".
Похоже, мое приложение не работает от имени пользователя root. Он установлен в / Applications, хотя. Как мое приложение может стать пользователем root?
1 ответ
Это правда, приложение должно запускаться от имени root для доступа к немобильным каталогам. Обсудив это с Optimo и Saurik, я, наконец, нашел правильный способ получения привилегий root.
- В функцию main() добавить
setuid(0);
а такжеsetgid(0);
- Соберите приложение как обычно.
- Создайте копию исполняемого файла в комплекте приложения.
Откройте исходный исполняемый файл и замените его содержимое следующим сценарием:
#!/bin/bash dir=$(dirname "$0") exec "${dir}"/COPIED_EXECUTABLE_NAME "$@"
Непосредственный запуск корневого приложения на iOS заканчивается неудачей. Поэтому мы заменяем основной исполняемый файл приложения на скрипт, который запускает корневой исполняемый файл.
В терминале перейдите к комплекту приложений.
chmod 0775
оригинальный исполняемый файл иchmod 6775
скопированный исполняемый файл.- Скопируйте комплект приложений в /Applications на устройство. Перезапустите SpringBoard, и у вас все получится. Если приложение не запускается, повторите шаги 5 и 6 на устройстве.