TL; DR 서명 할 앱 조각을 선택하고 해당 조각을 무단으로 변경하여 앱을 시작할 때 어떤 작업을 수행할지 여부는 개발자에게 달려 있습니다. 앱별로이를 파악하려면 시행 착오를 사용해야합니다.
응용 프로그램 번들의 어떤 구성 요소가 응용 프로그램을 제공하기 전에 서명을 할 것인지를 결정하는 것은 개발자의 몫입니다. 해시 서명을 변경하지 않고 이러한 것들을 수정하는 것은 거의 불가능하기 때문에 봉인의 내용은 사실상 훼손되지 않습니다. 그러나 이것이 실제로 조작 할 수 없다는 것을 의미하지는 않습니다.
Apple 개발자 안내서 에는 서명해야 할 내용에 대해 설명되어 있습니다.
응용 프로그램, 도구, 숨겨진 도우미 도구, 유틸리티 등 제품의 모든 실행 파일에 서명해야합니다. 응용 프로그램 번들에 서명하면 해당 리소스는 다루지 만 도구 및 하위 번들과 같은 하위 구성 요소는 다루지 않습니다. 이들 각각은 독립적으로 서명해야합니다.
응용 프로그램이 사용자에게 단일 얼굴을 표시하려고하는 하나 이상의 작은 도우미 도구가 포함 된 큰 UI 부분으로 구성된 경우 동일한 코드 서명 식별자를 모두 제공하여 코드 서명과 구분할 수 없도록 만들 수 있습니다. (Info.plist에서 CFFundleIdentifier 값이 모두 같거나 codesign 명령에서 -i 옵션을 사용하여 동일한 식별자를 지정하면됩니다.)이 경우 모든 프로그램 구성 요소에 동일한 키 체인 항목에 액세스하고 동일한 프로그램으로 검증합니다. 관련된 프로그램이 실제로 구별없이 단일 엔티티를 형성하려는 경우에만이를 수행하십시오.
범용 바이너리 (번들 또는 도구)에는 각 아키텍처 구성 요소에 개별 서명이 자동으로 적용됩니다. 이들은 독립적이며 일반적으로 최종 사용자 시스템의 기본 아키텍처 만 확인됩니다.
설치 프로그램 패키지 (.pkg 및 .mpkg 번들)의 경우 페이로드가 포함 된 CPIO 아카이브, 설치 스크립트가 포함 된 CPIO 아카이브 및 BOM (Bill of Material)에는 각각 XAR에 해시가 기록됩니다. 헤더와 헤더가 차례로 서명됩니다. 따라서 패키지에 서명 한 후 설치 스크립트 (예 :)를 수정하면 서명이 유효하지 않습니다.
플러그인 및 라이브러리에 서명 할 수도 있습니다. 현재는 필요하지 않지만 앞으로는 이러한 구성 요소에 서명을하는 데 단점이 없습니다.
상황에 따라 codesign은 Mach-O 실행 파일에 추가하거나 확장 속성을 추가하거나 번들의 Contents 디렉토리에 새 파일을 생성 할 수 있습니다. 다른 파일은 수정되지 않았습니다.
또한 여기 에서 응용 프로그램에 잘못된 서명이 있다는 것이 응용 프로그램이 시작되지 않는다는 것을 의미하는 것은 아닙니다. 페이지는 말합니다 :
서명을 확인할지 여부와 결정하는 경우 해당 확인 결과를 평가하는 방법을 결정하는 것은 서명 된 코드를 시작하거나로드하는 시스템 또는 프로그램에 달려 있습니다.
응용 프로그램은 수정을 허용하도록 선택할 수 있습니다.
가장 좋은 방법은 수정하려는 응용 프로그램에 대한 시행 착오 접근법입니다. 작동 할 수도 있고 작동하지 않을 수도 있습니다. 항상 대답 할 수있는 것은 없습니다.
앱에 서명 한 경우 번들에서 Contents/CodeResources
파일 또는 파일을 찾을 수 있습니다 Contents/_CodeSignature/CodeResources
. 이 파일은 모든 서명 된 구성 요소와 예상되는 해시 값을 번들로 나열합니다. 개발자가 변경 사항을 감시하기에 충분히 중요하다고 생각되는 응용 프로그램을 이해하기 시작하는 것이 좋습니다.