一旦iOS设备越狱的是,我们可以建立越狱应用程序(与THEOS),它被安装在/Applications
,其中预装的应用程序以root权限运行目录。 如果一个应用程序与Xcode的建成,一旦安装后,它会进入/private/var/mobile/Applications/
文件夹,里面应该有苹果沙箱强制执行(越狱前)。
所以,我的问题是:
对于越狱的设备,将在apps /private/var/mobile/Applications/
使用root权限或执行mobile
用户权限?
在Android中的情况下,一旦生根时,应用程序将具有通过执行获得root权限su
命令。 是的情况下,当涉及到iOS呢?
我想了解(西奥斯/ Xcode中),以及它如何影响哪些操作我的应用程序可以执行这两个发展方案之间的差异。
不同意不与任何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
(‡)这里有一个很好的讨论,与来自Saurik公司,输入有关不同的越狱可能会如何影响沙箱 。 长话短说:这取决于。
(†)更新 :在最新版本的iOS,第三方应用程序的位置已经移动到/var/mobile/Containers
,后来/var/containers/
,但相同的基本沙箱问题依然存在。
长话短说:无。
越狱是获得根的必要但非充分条件。 应用程序仍然会被默认沙盒。
你可以让你的应用程序以root权限运行做的是创造具有启动shell脚本root:wheel
所有权和755
的权限,然后用相同的所有权创建实际的可执行文件, 7555
为权限(即确定了“的setuid”位) ,然后调用setuid(0);
从内部main()
之前调用UIApplicationMain()