Будут ли приложения iOS после джейлбрейка работать с привилегиями root?

Как только устройство iOS взломано, мы можем создавать приложения для джейлбрейка (с помощью theos), и оно устанавливается в каталог /Applications, где предварительно загруженные приложения запускаются с привилегиями root. Если приложение создано с помощью Xcode, после его установки оно попадает в папку /private/var/mobile/Applications/, в которой предполагается принудительная песочница Apple (до джейлбрейка).

Итак, вопросы у меня такие:

  1. Будут ли приложения в /private/var/mobile/Applications/ выполняться на взломанном устройстве с привилегиями root или с mobile привилегиями пользователя?

  2. В случае Android после рутирования приложения должны будут получить привилегии root, выполнив команду su. Это относится и к iOS?

Я хотел бы понять разницу между этими двумя вариантами разработки (Theos/Xcode) и как это влияет на то, какие операции может выполнять мое приложение.


person Ocelot    schedule 12.04.2013    source источник
comment
Этот вопрос не следует считать не по теме. Привилегии, с которыми работает приложение, влияют на то, какие операции оно может успешно выполнять (открытие/запись файлов и т. д.). Шаги по влиянию на привилегии приложения, как показано в оба ответах ниже, являются не просто задачами системного администратора. Исходный код, сценарий запуска и, возможно, файл Info.plist также необходимо изменить, что является задачей программиста, реализуемой с помощью Objective-C/C и кода оболочки.   -  person Nate    schedule 13.04.2013
comment
Подождите, почему su не работает на взломанном устройстве iOS?   -  person NoodleOfDeath    schedule 30.07.2016


Ответы (2)


Не возражаю ни с чем, H2CO3 сказал, но добавлю некоторые дополнительные пояснения...

  • Приложения, установленные в /private/var/mobile/Applications/() с помощью Xcode, будут работать с привилегиями пользователя mobile даже на взломанных телефонах.

  • Даже на взломанном телефоне приложения, установленные в /private/var/mobile/Applications/(), будут помещены в песочницу почти (), как приложения на взломанном телефоне. Таким образом, нельзя читать данные других (обычных) приложений, даже если эти файлы принадлежат пользователю mobile.

  • Хорошее описание процесса, который такие приложения, как Cydia, используют для запуска с правами root, см. в этом ответе. Или просто войдите в свой телефон по SSH и загляните внутрь /Applications/Cydia.app/ самостоятельно.

  • Если вы просто скопируете/установите приложение (не делая того, что предлагает H2CO3) в /Applications/, оно не будет помещено в песочницу, но он по-прежнему будет работать с привилегиями mobile (UID=501):

iPhone5:~ root# cd /Applications

iPhone5:/Applications root# ls -altr ./HelloJB.app/
total 220
-rw-r--r--  1 root wheel   711 Apr  3 20:36 entitlements.xml
-rw-r--r--  1 root wheel   297 Apr  3 20:36 entitlements-daemon.xml
-rw-r--r--  1 root wheel  7972 Apr  3 20:36 embedded.mobileprovision
-rw-r--r--  1 root wheel 58755 Apr  3 20:36 date.zip
-rw-r--r--  1 root wheel   485 Apr  3 20:36 ResourceRules.plist
-rw-r--r--  1 root wheel     8 Apr  3 20:36 PkgInfo
-rw-r--r--  1 root wheel  1226 Apr  3 20:36 Info.plist
-rw-r--r--  1 root wheel 10960 Apr  3 20:36 Icon\@2x.png
-rw-r--r--  1 root wheel  8328 Apr  3 20:36 Icon.png
-rw-r--r--  1 root wheel   451 Apr  3 20:36 HelloJB.plist
-rwxr-xr-x  1 root wheel 61088 Apr  3 20:36 HelloJB*
-rwxr-xr-x  1 root wheel 42688 Apr  3 20:36 HelloDaemon*
drwxr-xr-x  2 root wheel   136 Apr  3 20:36 en.lproj/
drwxr-xr-x  2 root wheel   102 Apr  3 20:36 _CodeSignature/
drwxr-xr-x  4 root wheel   544 Apr  3 20:36 ./
drwxrwxr-x 54 root admin  1904 Apr  5 02:14 ../

iPhone5:/Applications root# ps -Aef | grep HelloJB
  501  9412     1   0   0:00.00 ??         0:00.33 /Applications/HelloJB.app/HelloJB

iPhone5:/Applications root# grep mobile /etc/passwd
mobile:*:501:501:Mobile User:/var/mobile:/bin/sh

() Вот хорошее обсуждение с участием Саурика о том, как различные джейлбрейки могут повлиять на песочницу. Короче говоря: это зависит.


Обновление(): в последних версиях iOS расположение сторонних приложений было перемещено в /var/mobile/Containers, а затем в /var/containers/, но основные проблемы с песочницей остаются.

person Nate    schedule 12.04.2013

Короче говоря: нет.

Взлом является необходимым, но недостаточным условием для получения root-доступа. Приложения по-прежнему будут помещаться в песочницу по умолчанию.

Что вы можете сделать, чтобы ваше приложение запускалось с привилегиями root, — это создать сценарий запуска оболочки, который имеет root:wheel владение и 755 разрешения, затем создать ваш фактический исполняемый файл с тем же владельцем, 7555 как разрешения (т.е. установить его бит «setuid»), затем вызовите setuid(0); из main() перед вызовом UIApplicationMain().

person Community    schedule 12.04.2013