Dans Mountain Lion, je sais que certaines applications, y compris toutes les applications du Mac App Store, sont signées numériquement par le développeur, de sorte que si elles sont modifiées, la signature ne correspondra pas et cela soulèvera toutes sortes d'erreurs (et la situation va s'intensifier avec la prochaine version du système d'exploitation ...).
Ma question est de savoir quelles parties du bundle .app sont couvertes par la signature? Si quelque chose dans les Appname.app/Contents
changements (y compris les métadonnées, comme la date de modification du Contents
dossier), est-ce que cela brise la signature? Est-ce juste le binaire Contents/MacOS
? Les .plists sont-ils inclus dans la signature? Le Resources
? En tant qu'utilisateur final, que puis-je pirater (le cas échéant) sans casser la signature?
la source
Réponses:
TL; DR Il appartient au développeur de choisir les éléments de l'application qui sont signés et si la falsification de ces éléments entraîne ou non des actions lorsque l'application est lancée. Vous devez faire des essais et des erreurs pour le comprendre application par application.
Il appartient en grande partie au développeur de décider quels composants de son ensemble d'applications sont représentés dans le sceau qui est signé avant de livrer leur application. Tout ce qui se trouve dans le sceau est effectivement inviolable car il est pratiquement impossible de modifier ces éléments sans changer leurs signatures de hachage. Mais cela ne signifie pas que vous ne pouvez pas les altérer.
Le guide du développeur Apple a ceci à dire sur ce que vous devez signer:
Aussi d'ici ce n'est pas nécessairement vrai que d' avoir une signature non valide pour un moyen d' application , il ne parviendra pas à son lancement. La page dit:
Une application peut choisir d'autoriser les modifications.
Votre meilleur pari est une approche par essais et erreurs avec n'importe quelle application que vous essayez de modifier. Cela peut fonctionner, peut-être pas. Il n'y a pas de réponse toujours vraie qui puisse être donnée.
Si une application a été signée, vous pouvez rechercher un
Contents/CodeResources
fichier ou unContents/_CodeSignature/CodeResources
fichier dans le bundle. Ce fichier répertorie tous les composants signés et leurs valeurs de hachage attendues dans le bundle. C'est un bon endroit pour commencer à comprendre quels éléments de l'application un développeur juge suffisamment critiques pour surveiller les changements.la source
Même si la question fait spécifiquement référence à Mountain Lion, il y a un changement important dans la nouvelle version de macOS. Sur macOS 10.11 et versions ultérieures, les signatures qui ne couvrent pas l'intégralité du code sont rejetées.
Voir la note technique TN2206 - Signature en profondeur du code macOS .
la source