2013-04-12 41 views
5

Khi thiết bị iOS đã được bẻ khóa, chúng tôi có thể xây dựng các ứng dụng jailbreak (với theos) và nó được cài đặt trong thư mục /Applications nơi các ứng dụng được tải sẵn chạy với các đặc quyền root. Nếu ứng dụng được xây dựng bằng Xcode, một khi ứng dụng được cài đặt, nó sẽ được chuyển vào thư mục /private/var/mobile/Applications/, được yêu cầu phải có hộp cát của Apple được thực thi (trước khi jailbreak).Sau khi bẻ khóa, các ứng dụng iOS có chạy với đặc quyền gốc không?

Vì vậy, câu hỏi tôi có bao gồm:

  1. Đối với một thiết bị jailbroken, các ứng dụng trong /private/var/mobile/Applications/ sẽ thực hiện với quyền root hoặc với mobile đặc quyền sử dụng?

  2. Trong trường hợp Android, sau khi được root, các ứng dụng sẽ phải đạt được các đặc quyền root bằng cách thực hiện lệnh su. Đó có phải là trường hợp khi nói đến iOS không?

Tôi muốn hiểu sự khác biệt giữa hai tùy chọn phát triển này (Theos/Xcode) và cách nó ảnh hưởng đến những hoạt động mà ứng dụng của tôi có thể thực hiện.

+2

Câu hỏi này không nên được xem xét ngoài chủ đề. Các đặc quyền mà một ứng dụng chạy với ảnh hưởng đến các hoạt động mà nó có thể hoàn thành thành công (mở/ghi tệp, v.v.). Các bước để ảnh hưởng đến đặc quyền của ứng dụng, như được hiển thị trong ** cả hai ** câu trả lời dưới đây, không chỉ đơn thuần là * sysadmin * nhiệm vụ. Nguồn ** mã **, kịch bản khởi chạy, và có thể tệp Info.plist, cũng cần được sửa đổi, đó là một nhiệm vụ lập trình viên, được thực hiện thông qua mã Objective-C/C và shell **. – Nate

+0

Đợi tại sao 't' không hoạt động trên thiết bị iOS đã bị bẻ khóa? –

Trả lời

7

Không đồng ý với bất cứ điều gì H2CO3 said, nhưng thêm một số giải thích gì thêm ...

  • Apps được cài đặt trong /private/var/mobile/Applications/ (& dao găm;) với Xcode sẽ chạy với người dùng mobile đặc quyền, ngay cả trên điện thoại jailbroken.

  • Ngay cả trên điện thoại jailbroken, các ứng dụng được cài đặt để /private/var/mobile/Applications/ (& dao găm;) sẽ được sandboxed gần (& ddagger;) như các ứng dụng trên điện thoại bị bỏ tù. Vì vậy, không đọc dữ liệu của các ứng dụng khác (bình thường), ngay cả khi các tệp đó thuộc sở hữu của người dùng mobile.

  • Để có mô tả đúng về quy trình mà các ứng dụng như Cydia sử dụng để chạy dưới dạng gốc, see this answer. Hoặc, chỉ cần ssh vào điện thoại của bạn, và hãy xem bên trong /Applications/Cydia.app/ chính mình.

  • Nếu bạn chỉ cần sao chép/cài đặt một ứng dụng (mà không làm gì H2CO3 suggested) để /Applications/, nó sẽ không được sandboxed, nhưng nó vẫn sẽ chạy với mobile (UID = 501) đặc quyền:

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;) Dưới đây là good discussion, with input from Saurik, about how different jailbreaks may affect the sandbox. Dài câu chuyện ngắn: nó phụ thuộc.


(& dao găm;) Cập nhật: trong các phiên bản gần đây của iOS, vị trí của các ứng dụng của bên thứ 3 đã được chuyển đến /var/mobile/Containers, và sau đó để /var/containers/, nhưng những vấn đề cơ bản giống nhau sandbox vẫn còn.

8

Ngắn câu chuyện ngắn: không.

Việc bẻ khóa là điều kiện cần thiết nhưng không đủ để đạt được thư mục gốc. Ứng dụng sẽ vẫn được đặt hộp cát theo mặc định.

gì bạn có thể làm cho việc chạy ứng dụng của bạn với quyền root đang tạo ra một kịch bản shell khởi động mà có root:wheel quyền sở hữu và 755 quyền, sau đó tạo ra thực thi thực tế của bạn với quyền sở hữu cùng, 7555 như quyền (tức là thiết lập của nó "setuid" bit), sau đó gọi setuid(0); từ trong phạm vi main(), trước khi gọi UIApplicationMain().

Các vấn đề liên quan