Получение root-прав на iOS для NSFileManager (Jailbreak) - PullRequest
11 голосов
/ 20 октября 2011

Я пытаюсь записать файл в корневой раздел устройства. Это приложение для джейлбрейка, поэтому оно установлено в / Applications. При записи в корневую файловую систему с использованием NSFileManager запись завершается с ошибкой "Permission Denied" .

Похоже, мое приложение не работает от имени пользователя root. Он установлен в / Applications, хотя. Как мое приложение может стать пользователем root?

1 Ответ

18 голосов
/ 10 января 2012

Это правда, приложение должно запускаться от имени root для доступа к немобильным каталогам.Обсудив это с Optimo и Saurik, я, наконец, нашел правильный способ получить права root.

  1. В функцию main () добавьте setuid(0); и setgid(0);
  2. Создайте приложениеобычно.
  3. Создайте копию исполняемого файла в комплекте приложения.
  4. Откройте исходный исполняемый файл и замените его содержимое следующим сценарием:

    #!/bin/bash
    dir=$(dirname "$0")
    exec "${dir}"/COPIED_EXECUTABLE_NAME "$@"
    

    Непосредственный запуск корневого приложения не работает на iOS.Поэтому мы заменяем основной исполняемый файл приложения на скрипт, который запускает корневой исполняемый файл.

  5. В терминале перейдите к комплекту приложения.

  6. chmod 0775 исходный исполняемый файл и chmod 6775 скопированный исполняемый файл.
  7. Скопируйте комплект приложений в / Applications на устройство.Перезапустите SpringBoard, и все будет хорошо.Если приложение не запускается, повторите шаги 5 и 6 на устройстве.
...