Xcode에서 get-task-allow는 무엇을합니까?


95

따라서 iPhone 앱 프로젝트에서 권한을 설정할 때 새 Entitlements.plist를 만들고 get-task-allow 값을 false로 설정합니다. 그런데 왜? 이 키는 무엇을 나타 냅니까?

편집하다

이것은 이 질문 과 관련 이 있습니다.이 키의 값을 true로 바꾸면 장치에 앱을 설치할 수 있음을 알았습니다)

답변:


165

에서 ADC에이 스레드 :

get-task-allow는 애플리케이션에 로그인 할 때 다른 프로세스 (예 : 디버거)가 앱에 연결되도록 허용합니다. 배포 프로필에는이 값이 꺼져 있어야하지만 개발 프로필에는이 값이 켜져 있어야합니다 (그렇지 않으면 Xcode가 앱을 시작하고 연결할 수 없음).


2
그렇다면 프로젝트에는 두 개의 Entitlements.plist 파일이 있어야합니다. 하나는이 값이 디버그 프로필을 대상으로하는 YES로 설정되고 다른 하나는 배포 프로필을 대상으로하는 NO를 지정하는 파일입니까?
Greg Maletic

2
신경 쓰지 마세요, 내 질문을 해결했습니다. 디버그 빌드 설정에서 Entitlements.plist를 생략해도 문제가 없습니다.
Greg Maletic

1
하지만 개발자 프로필을 사용하여 디버그 모드에서 Entitlements.plist가 프로젝트에 포함되지 않은 경우에도 디버그 할 수 있습니다. 누군가 나에게 이것을 설명 할 수 있습니까?
spd

1
디버그의 기본값은 true이고 릴리스의 기본값은 false입니다. false로 설정하면 디버그가 비활성화됩니다.
The Lazy Coder 2012

1
그러나 배포 구성은 일반적으로 'release'에서 파생됩니다. 즉, AdHoc에 대해 FALSE를 지정할 필요가 없다는 것을 의미하지 않습니까? (또는 그 문제에 대해 Entitlements 파일이 있습니까?)
Nicolas

13

iPhone에서 애플리케이션을 디버깅하는 기능.


1
흥미 롭군요! 그게 다라면 왜 값을 false로 바꾸면 내 장치에 앱을 설치할 수 없는지 궁금합니다. (관련 SO 질문 : stackoverflow.com/questions/997884/… )
Codebeef

그것이하는 일입니다 ...하지만 실제로 무엇을하여 그렇게 할 수 있습니까?
Ryan Detzel 2009-06-17

1
이 답변은 Codebeef와 같은 더 많은 정보를 포함하면 크게 향상 될 수 있습니다.
Jadar

@Codebeef 나는 이것이 Xcode가 내재하는 것이 아니라 부과하는 제한이라고 생각합니다.
saagarjha

7

귀하의 대답 은 정확 하지만 정확히 무엇을 get_task_allow의미 하는지 알고 싶은 사람들이 할 수 있도록 이에 대해 더 구체적으로 설명하고 싶습니다 .

get_task_allow다른 앱이 앱의 작업 포트를 가져올 수 있도록하는 권한입니다. 즉, 다른 앱이 task_for_pid()앱 프로세스 ID로 실행되는 경우 앱 의 작업 포트를 가져 와서 메모리에서 항목을 쓰고 읽는 등의 작업을 수행 할 수 있으므로 항목을 패치하고 동작을 수정할 수 있습니다. 당신의 앱.

탈옥이 어떻게 작동하는지 살펴보면, 그들이하는 첫 번째 일 중 하나 가 with value task_for_pid(mach_task_self(),0,&kernel_task);라는 것을 알게 될 것 kernel_task입니다. 그래서 그들은 커널의 메모리를 건드릴 수 있습니다.mach_port_t0

커널 인 타이틀먼트에는 인 get_task_allow타이틀 먼트가없고 Apple은 tfp0( task_for_pid 0) 의 가능성도 제거 했기 때문에 패치가 필요합니다.

따라서 기본적으로 Xcode가 앱의 메모리를 터치하고 디버깅을 위해 작업해야하므로 디버깅을 위해이 기능을 활성화해야하지만 앱을 배포하려면이 기능을 비활성화해야합니다. 그렇지 않으면 모든 앱이 작업 포트.


-7

xcode 4 : 새 파일에서 Entitlements.plist 파일을 만들어야합니다. 및 Targets-> build Settings-> Code Signing Entitlements 여기에 "Entitlements.plist"를 작성해야합니다.

나는 이것을했고 xcode는 더 이상 오류가 발생하지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.