Get-task-allow làm gì trong Xcode?


95

Vì vậy, khi tôi thiết lập các quyền của mình trong dự án ứng dụng iPhone của mình, tôi tạo một Entitlements.plist mới và đặt giá trị của get-task-allow thành false. Nhưng tại sao? Chìa khóa này đại diện cho điều gì?

BIÊN TẬP

Lưu ý rằng điều này liên quan đến câu hỏi này - tôi nhận thấy rằng việc chuyển giá trị của khóa này thành true cho phép tôi cài đặt ứng dụng trên thiết bị của mình)

Câu trả lời:


165

Từ chủ đề này trên ADC :

get-task-allow, khi đăng nhập vào một ứng dụng, cho phép các quy trình khác (như trình gỡ lỗi) đính kèm vào ứng dụng của bạn. Hồ sơ phân phối yêu cầu giá trị này phải được tắt, trong khi hồ sơ phát triển yêu cầu giá trị này được bật (nếu không Xcode sẽ không bao giờ có thể khởi chạy và đính kèm vào ứng dụng của bạn).


2
Vì vậy, các dự án có bắt buộc phải có hai tệp Entitlements.plist, một trong đó giá trị này được đặt thành CÓ nhắm mục tiêu cấu hình Gỡ lỗi và một tệp khác chỉ định KHÔNG, nhắm mục tiêu cấu hình Phân phối không?
Greg Maletic

2
Đừng bận tâm, đã giải quyết câu hỏi của chính tôi. Nếu bạn loại bỏ Entitlements.plist khỏi cài đặt bản dựng Gỡ lỗi, bạn không có vấn đề gì.
Greg Maletic

1
Tuy nhiên, tôi có thể gỡ lỗi ngay cả sau khi Entitlements.plist không được đưa vào dự án ở chế độ Gỡ lỗi với hồ sơ Nhà phát triển. Ai đó có thể giải thích cho tôi điều này?
spd

1
mặc định cho gỡ lỗi là đúng, mặc định cho bản phát hành là sai. Chuyển nó thành false sẽ vô hiệu hóa gỡ lỗi.
The Lazy Coder

1
Nhưng cấu hình phân phối thường bắt nguồn từ 'phát hành'. Điều đó không có nghĩa là bạn không cần chỉ định FALSE cho AdHoc? (hoặc đối với vấn đề đó, có một tệp Quyền lợi nào cả?)
Nicolas Miari

13

Khả năng gỡ lỗi ứng dụng của bạn trên iPhone.


1
Hấp dẫn! Nếu đó là tất cả, thì tôi tự hỏi tại sao việc chuyển giá trị thành false lại ngăn tôi cài đặt ứng dụng trên thiết bị của mình? (Câu hỏi SO có liên quan: stackoverflow.com/questions/997884/… )
Codebeef

Đó là những gì nó làm ... nhưng nó THỰC SỰ làm những gì cho phép bạn làm điều đó?
Ryan Detzel

1
Câu trả lời này có thể được cải thiện đáng kể nếu nó bao gồm nhiều thông tin hơn như Codebeef's.
Jadar

@Codebeef Tôi tin rằng đây là một hạn chế mà Xcode áp đặt thay vì một hạn chế cố hữu.
saagarjha 25/03/18

7

Mặc dù câu trả lời của bạn là đúng, tôi chỉ muốn nói rõ hơn về điều này để những người muốn biết chính xác get_task_allownghĩa là gì, có thể.

get_task_allowlà một quyền cho phép các ứng dụng khác có được cổng tác vụ của ứng dụng của bạn. Điều này có nghĩa là nếu bất kỳ ứng dụng nào khác chạy task_for_pid()với ID quy trình ứng dụng của bạn, họ sẽ nhận được cổng tác vụ của ứng dụng của bạn để họ có thể làm những việc như viết và đọc mọi thứ trên bộ nhớ, do đó có thể vá mọi thứ và sửa đổi hành vi của ứng dụng của bạn.

Nếu bạn xem cách jailbreak hoạt động, bạn sẽ nhận thấy một trong những điều đầu tiên họ làm là nhận task_for_pid(mach_task_self(),0,&kernel_task);được kernel_taskmột mach_port_tgiá trị có giá trị 0, để họ có thể chạm vào bộ nhớ của nhân.

Vì các quyền của kernel không có get_task_allowquyền và Apple thậm chí đã loại bỏ khả năng thực hiện tfp0( task_for_pid 0), họ cần một bản vá.

Vì vậy, về cơ bản vì Xcode cần chạm vào bộ nhớ ứng dụng của bạn và làm việc với nó để gỡ lỗi, bạn sẽ cần bật tính năng này để gỡ lỗi, nhưng bạn sẽ cần phải tắt tính năng này để phân phối ứng dụng của mình hoặc bất kỳ ứng dụng nào có thể lấy được cổng tác vụ.


-7

Đối với xcode 4: bạn phải tạo tệp Entitlements.plist từ tệp mới. và Mục tiêu-> xây dựng Cài đặt-> Tiện ích ký mã bạn phải viết ở đây "Entitlements.plist"

Tôi đã làm điều này và xcode không gặp lỗi nữa

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.