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

Oce*_*lot 5 xcode root jailbreak ios

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

所以,我的问题是:

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

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

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

小智 8

长话短说:没有.

越狱是获得根的必要但不充分的条件.默认情况下,应用仍将采用沙盒设置.

使用root权限运行应用程序可以做的是创建一个具有root:wheel所有权和755权限的启动shell脚本,然后创建具有相同所有权的实际可执行文件,7555如权限(即设置其"setuid"位),然后setuid(0);从内部调用main(),在打电话之前UIApplicationMain().


Nat*_*ate 7

不同意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
Run Code Online (Sandbox Code Playgroud)

(‡)这是Saurik提供的关于不同越狱如何影响沙箱的讨论.长话短说:这取决于.


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