2011-10-20 21 views
10

Tôi đang cố ghi tệp vào phân vùng gốc của thiết bị. Nó là một ứng dụng Jailbreak nên nó được cài đặt trong/Applications. Khi ghi vào hệ thống tập tin gốc bằng cách sử dụng NSFileManager ghi không thành công với lỗi "Quyền bị từ chối".Giành quyền root trên iOS cho NSFileManager (Jailbreak)

Có vẻ như ứng dụng của tôi không chạy dưới dạng gốc. Nó được cài đặt trong/Applications mặc dù. Làm thế nào ứng dụng của tôi có thể trở thành root?

Trả lời

18

Điều đó đúng, ứng dụng phải chạy dưới dạng root để truy cập các thư mục không di động. Sau khi thảo luận về điều này với Optimo và Saurik, cuối cùng tôi đã tìm được đúng cách để có được các đặc quyền root.

  1. Trong() Chức năng chính thêm setuid(0);setgid(0);
  2. Xây dựng ứng dụng bình thường.
  3. Tạo bản sao của tệp thi hành trong gói ứng dụng.
  4. Mở tập tin thực thi ban đầu và thay thế nội dung của nó với kịch bản này:

    #!/bin/bash 
    dir=$(dirname "$0") 
    exec "${dir}"/COPIED_EXECUTABLE_NAME "[email protected]" 
    

    Trực tiếp tung ra một ứng dụng gốc không thành công trên iOS. Do đó, chúng tôi thay thế tệp thực thi chính của ứng dụng bằng tập lệnh khởi chạy tệp thực thi gốc.

  5. Trong thiết bị đầu cuối, điều hướng đến gói ứng dụng.

  6. chmod 0775 tệp thi hành gốc và chmod 6775 tệp thi hành được sao chép.
  7. Sao chép gói ứng dụng vào/Ứng dụng cho thiết bị. Khởi động lại SpringBoard và bạn nên làm tốt. Nếu ứng dụng không khởi chạy thì lặp lại bước 5 & 6 trên thiết bị.
+0

bạn có thể vui lòng hướng dẫn cách bước 3 trở đi sẽ diễn ra thông qua mã hóa chỉ \ –

+0

Hi, nơi tôi có thể tìm thấy con đường này NSArray * đường dẫn = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); NSString * docDirectory = [đường dẫn đối tượngAtIndex: 0]; bởi vì tôi không thể gỡ lỗi – HDNZ

+0

Tôi làm việc trên iOS 6, nếu tôi di chuyển gói ứng dụng đến/Ứng dụng không xuất hiện trên bàn đạp: ( – dvkch

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