一旦越狱,iOS应用程序将以root权限运行吗?

时间:2013-04-12 10:20:17

标签: ios xcode jailbreak root

一旦iOS设备被越狱,我们就可以构建越狱应用程序(使用theos),并将其安装在/Applications目录中,其中预加载的应用程序以root权限运行。如果一个应用程序是使用Xcode构建的,一旦安装它,它就会进入/private/var/mobile/Applications/文件夹,该文件夹应该强制执行A​​pple沙箱(在越狱之前)。

所以,我的问题是:

  1. 对于越狱设备,/private/var/mobile/Applications/中的应用是否会以root权限或mobile用户权限执行?

  2. 对于Android,一旦生根,应用程序必须通过执行su命令获得root权限。是否也适用于iOS?

  3. 我想了解这两个开发选项(Theos / Xcode)之间的区别以及它如何影响我的应用程序可以执行的操作。

2 个答案:

答案 0 :(得分:8)

长话短说:不。

越狱是获得root权限的一个必要但不充分的条件。默认情况下,应用程序仍然会被沙箱化。

使您的应用以root权限运行可以做的是创建一个具有root:wheel所有权和755权限的启动shell脚本,然后创建具有相同所有权的实际可执行文件{{1作为权限(即设置其“setuid”位),然后在调用7555之前从setuid(0);内调用main()

答案 1 :(得分:7)

不同意任何事情H2CO3 said,但要进一步澄清......

  • 使用Xcode在/private/var/mobile/Applications/(†)中安装的应用程序将以用户mobile权限运行,即使在越狱手机上也是如此。

  • 即使在越狱手机上,安装到/private/var/mobile/Applications/(†)的应用程序也会被沙盒几乎(‡),就像手机上的应用程序一样。因此,不读取其他(普通)应用程序的数据,即使这些文件归用户mobile所有。

  • 有关Cydia等应用程序以root用户身份运行的流程的详细说明see this answer。或者,只需将ssh插入手机,然后自己查看/Applications/Cydia.app/内部。

  • 如果你只是复制/安装一个应用程序(不对H2CO3 suggested执行/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

(‡)这是一个good discussion, with input from Saurik, about how different jailbreaks may affect the sandbox。长话短说:这取决于。


(†)更新:在最新版本的iOS中,第三方应用的位置已移至/var/mobile/Containers,稍后移至/var/containers/,但相同基本的沙箱问题仍然存在。