一旦越狱,iOS应用程序将以root权限运行吗?
一旦iOS设备越狱,我们可以构build越狱应用程序(使用theos),并将其安装在/Applications
目录中,预装的应用程序以root权限运行。 如果一个应用程序是用Xcode构build的,那么一旦安装了应用程序,它将进入/private/var/mobile/Applications/
文件夹,该文件夹应该具有苹果沙盒(在越狱之前)。
所以,我有的问题是:
-
对于越狱设备,
/private/var/mobile/Applications/
将以root权限或mobile
用户权限执行? -
在Android的情况下,一旦植入,应用程序将不得不通过执行
su
命令获得root权限。 是否也是这样的情况,当涉及到iOS?
我想了解这两个开发选项(Theos / Xcode)之间的区别以及它如何影响我的应用程序可以执行的操作。
并不意见H2CO3所说的任何东西,但要补充一些说明…
-
在Xcode中安装在
/private/var/mobile/Applications/
(†)中的/private/var/mobile/Applications/
将以用户mobile
特权运行,即使是在越狱手机上。 -
即使在越狱的手机上,安装到
/private/var/mobile/Applications/
(†)的/private/var/mobile/Applications/
几乎都会像监狱电话上的应用程序一样被沙盒化(‡)。 所以,即使这些文件是由用户mobile
拥有的,也不会读取其他(普通)应用程序的数据。 -
为了更好的描述像Cydia这样的应用程序使用root身份运行的过程, 请参阅此答案 。 或者,只需ssh进入你的手机,并自己看看
/Applications/Cydia.app/
。 -
如果您只需将应用程序复制/安装到
/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
(‡)这里有一个很好的讨论,来自Saurik的input,介绍不同的越狱可能会如何影响沙箱 。 长话短说:这取决于。
(†)更新 :在最近的iOS版本中,第三方应用程序的位置已经被移动到/var/mobile/Containers
,后来被移动到/var/containers/
,但仍然存在相同的基本沙盒问题。
长话短说:不。
越狱是获取根源的必要条件,但不是充分条件。 应用程序默认情况下仍然是沙盒。
你可以做什么使你的应用程序以root权限运行,就是创build一个具有root:wheel
权限和755
权限的启动shell脚本,然后使用相同的所有权创build实际的可执行文件, 7555
作为权限(即设置其“setuid”位) ,然后调用setuid(0);
从main()
调用UIApplicationMain()
之前。