TL; DR Uygulamanın hangi parçalarının imzalandığını ve bu parçalara müdahale edip etmediğini uygulama başlatıldığında herhangi bir eylemle sonuçlanıp sonuçlanmayacağını seçmek geliştiriciye bağlıdır. Uygulama bazında anlamak için deneme yanılma yöntemini kullanmanız gerekir.
Uygulama paketindeki hangi bileşenlerin, uygulamalarını teslim etmeden önce imzalanan mühürde temsil edildiğine karar vermek, geliştiriciye bağlıdır. Mühürdeki her şey etkili bir şekilde kurcalamaya dayanıklıdır, çünkü hash imzalarını değiştirmeden bu şeyleri değiştirmek imkansızdır. Ama bu aslında onlarla kurcalamayacağınız anlamına gelmez.
Apple Geliştirici kılavuzunda aşağıdakileri imzalamanız gereken şeyler vardır:
Uygulamalar, araçlar, gizli yardımcı araçlar, yardımcı programlar vb. Dahil olmak üzere ürününüzdeki her yürütülebilir dosyayı imzalamanız gerekir. Bir uygulama paketini imzalamak kaynaklarını kapsar, ancak araçlar ve alt paketler gibi alt bileşenlerini kapsamaz. Bunların her biri bağımsız olarak imzalanmalıdır.
Uygulamanız, kullanıcıya tek bir yüz sunmaya çalışan bir veya daha fazla küçük yardımcı araç içeren büyük bir kullanıcı arabirimi parçasından oluşuyorsa, bunları tamamen aynı kod imzalama tanımlayıcısını vererek kod imzalama için ayırt edilemez hale getirebilirsiniz. (Bunların Info.plist'lerinde hepsinin aynı CFBundleIdentifier değerine sahip olduğundan emin olarak veya aynı tanımlayıcıyı atamak için codesign komutunda -i seçeneğini kullanarak yapabilirsiniz.) Bu durumda, tüm program bileşenlerinizde aynı anahtarlık öğelerine erişin ve aynı programla doğrulayın. Bunu yalnızca ilgili programların hiçbir ayrım yapılmadan tek bir varlık oluşturması gerekiyorsa yapın.
Evrensel bir ikili dosyaya (paket veya araç) otomatik olarak her mimari bileşene ayrı ayrı imzalar uygulanır. Bunlar bağımsızdır ve genellikle yalnızca son kullanıcının sistemindeki yerel mimari doğrulanır.
Yükleyici paketleri (.pkg ve .mpkg demetleri) durumunda, her şey dolaylı olarak imzalanır: Yükü içeren CPIO arşivinin, yükleme komut dosyalarını içeren CPIO arşivinin ve malzeme listesinin (BOM) her biri XAR'da kayıtlı bir karma içerir ve bu başlık da imzalanır. Bu nedenle, paket imzalandıktan sonra bir yükleme komut dosyasını (örneğin) değiştirirseniz, imza geçersiz olur.
Eklentilerinizi ve kitaplıklarınızı da imzalamak isteyebilirsiniz. Bu şu anda gerekli olmasa da, gelecekte olacak ve bu bileşenler üzerinde imzaya sahip olmanın bir dezavantajı yoktur.
Duruma bağlı olarak, codeign Mach-O yürütülebilir dosyanıza ekleyebilir, dosyaya genişletilmiş öznitelikler ekleyebilir veya paketinizin Contents dizininde yeni dosyalar oluşturabilir. Diğer dosyalarınızın hiçbiri değiştirilmedi.
Ayrıca buradan , bir uygulama için geçersiz bir imzaya sahip olmanın, uygulamanın başlatılamayacağı anlamına geldiği doğru değildir. Sayfa diyor ki:
İmzanın doğrulanıp doğrulanmayacağına karar vermek ve eğer varsa, bu doğrulamanın sonuçlarının nasıl değerlendirileceğini belirlemek, imzalı kodu başlatan veya yükleyen sistem veya programa bağlıdır.
Bir uygulama değişikliklere izin vermeyi seçebilir.
En iyi seçeneğiniz, değiştirmeye çalıştığınız herhangi bir uygulama için deneme yanılma yaklaşımıdır. Çalışabilir, olmayabilir. Verilebilecek her zaman doğru cevap yoktur.
Bir uygulama imzalanmışsa paketteki bir Contents/CodeResources
dosyayı veya dosyayı arayabilirsiniz Contents/_CodeSignature/CodeResources
. Bu dosya, imzalı bileşenleri ve paketteki beklenen karma değerlerini listeler. Bir geliştiricinin değişiklikleri izlemek için yeterince kritik gördüğü uygulamanın hangi parçalarını anlamaya başlamak için iyi bir yerdir.