【问题标题】:Once jailbroken, will iOS apps run with root privilege?越狱后,iOS 应用程序会以 root 权限运行吗?
【发布时间】:2013-04-04 19:58:37
【问题描述】:

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

所以,我的问题是:

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

  2. 如果是 Android,一旦 root,应用程序必须通过执行 su 命令获得 root 权限。 iOS 也是这样吗?

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

【问题讨论】:

  • 这个问题不应被视为离题。应用程序运行的权限会影响它可以成功完成的操作(打开/写入文件等)。影响应用程序权限的步骤(如下面的两个答案所示)不仅仅是sysadmin任务。源码code,启动脚本,可能还有Info.plist文件,也需要修改,这是程序员的任务,通过Objective-C/C和shellcode实现>.
  • 等等,为什么su 不能在越狱的 iOS 设备上工作?

标签: ios xcode jailbreak root


【解决方案1】:

不反对任何H2CO3 said,但要进一步澄清...

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

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

  • 如需了解 Cydia 等应用程序以 root 身份运行的过程,see this answer。或者,只需 ssh 进入您的手机,然后自己查看 /Applications/Cydia.app/ 内部。

  • 1234563
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 版本中,第 3 方应用程序的位置已移至 /var/mobile/Containers,后来移至 /var/containers/,但仍然存在相同的基本沙盒问题.

【讨论】:

    【解决方案2】:

    长话短说:没有。

    越狱是获得root权限的必要条件,但不是充分条件。默认情况下,应用仍将被沙盒化。

    要让您的应用程序以 root 权限运行,您可以创建一个具有 root:wheel 所有权和 755 权限的启动 shell 脚本,然后创建具有相同所有权的实际可执行文件,7555 作为权限(即设置它的“setuid”位),然后在调用UIApplicationMain()之前从main()中调用setuid(0);。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-12
      • 1970-01-01
      • 1970-01-01
      • 2015-08-02
      • 1970-01-01
      • 2014-11-21
      • 1970-01-01
      相关资源
      最近更新 更多