따라서 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_t
0
커널 인 타이틀먼트에는 인 get_task_allow
타이틀 먼트가없고 Apple은 tfp0
( task_for_pid 0
) 의 가능성도 제거 했기 때문에 패치가 필요합니다.
따라서 기본적으로 Xcode가 앱의 메모리를 터치하고 디버깅을 위해 작업해야하므로 디버깅을 위해이 기능을 활성화해야하지만 앱을 배포하려면이 기능을 비활성화해야합니다. 그렇지 않으면 모든 앱이 작업 포트.