Получение root-прав на iOS для NSFileManager (Jailbreak)

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

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

1 ответ

Решение

Это правда, приложение должно запускаться от имени 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 на устройстве.
Другие вопросы по тегам