2013-04-12 35 views
5

iOS設備越獄後,我們可以構建越獄應用程序(使用theos),並將其安裝在/Applications目錄中,其中預加載的應用程序以root權限運行。如果應用程序是使用Xcode構建的,那麼一旦安裝了應用程序,它將進入/private/var/mobile/Applications/文件夾,該文件夾應該具有Apple強制執行的沙箱(在越獄之前)。一旦越獄,iOS應用程序將以root權限運行嗎?

所以,我的問題是:

  1. 對於越獄的設備,將在/private/var/mobile/Applications/的應用程序具有根權限或與mobile用戶權限執行?

  2. 在Android的情況下,一旦植入,應用程序將不得不通過執行su命令獲得root權限。對於iOS來說也是這樣嗎?

我想了解這兩個開發選項(Theos/Xcode)之間的區別以及它如何影響我的應用程序可以執行的操作。

+2

這個問題不應該被視爲脫離主題。應用程序運行的特權影響它可以成功完成的操作(打開/寫入文件等)。如** ** **答案中所示,影響應用程序權限的步驟不僅僅是* sysadmin *任務。源代碼**,啓動腳本,也許Info.plist文件也需要修改,這是一個程序員任務,通過Objective-C/C和shell **代碼**實現。 – Nate

+0

等一下爲什麼'su'不能在越獄的iOS設備上運行? –

回答

7

與任何H2CO3 said不是不同意,而是要增加一些進一步澄清...

  • 應用程序安裝在/private/var/mobile/Applications/(匕首),其具有的Xcode將與用戶mobile權限甚至越獄的手機上運行。安裝到/private/var/mobile/Applications/

  • 即使在一個越獄的手機,應用程序(&匕首)將沙盒幾乎(&ddagger)像監禁電話上的應用程序。因此,即使這些文件歸用戶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/,但相同的基本沙箱問題依然存在。

8

長話短說:沒有。

越獄是獲得根源的必要條件,但不是充分條件。默認情況下,應用仍將被沙盒化。

你可以讓你的應用程序以root權限運行時創建具有root:wheel所有權和755權限啓動shell腳本做什麼,然後用相同的所有權創建實際的可執行文件,7555的權限(即確定了「的setuid」位),然後在致電UIApplicationMain()之前,從main()內呼叫setuid(0);

相關問題