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

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

편집하다

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



답변

에서 ADC에이 스레드 :

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


답변

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


답변

귀하의 대답 은 정확 하지만 정확히 무엇을 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가 앱의 메모리를 터치하고 디버깅을 위해 작업해야하므로 디버깅을 위해이 기능을 활성화해야하지만 앱을 배포하려면이 기능을 비활성화해야합니다. 그렇지 않으면 모든 앱이 작업 포트.


답변

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

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


답변