2013-04-12 3 views
5

Gdy urządzenie iOS jest jailbreak, możemy budować aplikacje jailbreak (z theos) i zostanie ono zainstalowane w katalogu /Applications, gdzie wstępnie załadowane aplikacje działają z uprawnieniami roota. Jeśli aplikacja jest zbudowana z Xcode, po jej zainstalowaniu trafia do folderu /private/var/mobile/Applications/, który ma mieć wymuszone działanie piaskownicy Apple (przed jailbreak).Po uruchomieniu jailbreak, aplikacje na iOS będą działać z uprawnieniami roota?

Więc mam pytania są następujące:

  1. Dla jailbroken urządzeniu, aplikacje w /private/var/mobile/Applications/ wykonać z uprawnieniami roota lub z mobile uprawnieniami użytkowników?

  2. W przypadku Androida, po zakorzenieniu, aplikacje będą musiały uzyskać uprawnienia root'a, wykonując komendę su. Czy tak jest również w przypadku iOS?

Chciałbym zrozumieć różnicę między tymi dwiema opcjami rozwoju (Theos/Xcode) i ich wpływem na operacje, które może wykonywać moja aplikacja.

+2

To pytanie nie powinno być traktowane jako temat wyłączony. Uprawnienia, które uruchamia aplikacja, wpływają na to, jakie operacje może ona pomyślnie zakończyć (otwieranie/zapisywanie plików itp.). Kroki mające wpływ na przywileje aplikacji, jak pokazano w ** obu odpowiedziach poniżej, nie są jedynie * sysadmin * zadaniami. Kod źródłowy ** **, skrypt uruchomieniowy i być może plik Info.plist również muszą zostać zmodyfikowane, co jest zadaniem programisty, zaimplementowanym za pomocą Objective-C/C i powłoki ** code **. – Nate

+0

Poczekaj, dlaczego "su" nie działa na jailbreak urządzenia z systemem iOS? –

Odpowiedz

7

Nie zgadzając się z niczego H2CO3 said, ale dodać kilka dalszych wyjaśnień ...

  • Aplikacje zainstalowane w /private/var/mobile/Applications/ (i sztyletem;) z Xcode będzie działał z uprawnieniami użytkownika mobile, nawet na jailbroken komórkowych.

  • Nawet na jailbroken telefon, aplikacje zainstalowane na /private/var/mobile/Applications/ sztyletem; (&) będą piaskownicy prawie (& ddagger;) jak aplikacje na telefonie uwięziony. Dlatego nie można odczytać danych innych (normalnych) aplikacji, nawet jeśli te pliki należą do użytkownika mobile.

  • Dla dobrego opisu procesu, który aplikacje takie jak Cydia używają do uruchamiania jako root, see this answer. Lub po prostu ssh na swój telefon i sam zajrzyj do wnętrza /Applications/Cydia.app/.

  • Jeśli po prostu skopiować/zainstalować aplikację (nie robiąc co H2CO3 suggested) do /Applications/, nie będzie piaskownicy, ale będzie nadal działać z mobile (UID = 501) przywilejów:

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 

(& ddagger;) Oto good discussion, with input from Saurik, about how different jailbreaks may affect the sandbox. Krótko mówiąc: to zależy.


(i sztylet;) Update: w ostatnich wersjach iOS, położenie aplikacji 3rd-partyjnych została przeniesiona do /var/mobile/Containers, a później do /var/containers/, ale te same podstawowe kwestie pozostają piaskownicy.

8

Krótka historia: nie.

Łamanie jaj jest koniecznym, ale niewystarczającym warunkiem uzyskania korzenia. Aplikacje będą nadal domyślnie testowane w piaskownicy.

Co można zrobić dla dokonywania aplikacji uruchamiane z uprawnieniami roota jest tworzenie skrypt startowy, który ma root:wheel własności i 755 uprawnienia, a następnie stworzyć swój rzeczywisty wykonywalny z tego samego właściciela, 7555 jak uprawnienia (czyli ustawić jej „setuid” bit), a następnie zadzwoń pod numer setuid(0); z poziomu main(), zanim zadzwonisz pod numer UIApplicationMain().

Powiązane problemy