bug? en codesign --remove-fonction de signature
Je voudrais enlever la signature numérique à partir d'un Mac app qui a été signé avec le codesign. Il y a une option non documentée de codesign, --remove-signature, qui par son nom semble être ce dont j'ai besoin. Cependant, je ne peux pas le faire fonctionner. Je me rends compte qu'il est sans-papiers, mais je ne pouvais vraiment utiliser la fonctionnalité. Peut-être que je suis en train de faire quelque chose de mal?
codesign -s MyIdentity foo.app
fonctionne normalement, la signature de l'app
codesign --remove-signature foo.app
n'activité du disque pendant quelques secondes, puis dit
foo.app: invalid format for signature
et foo.app a augmenté de 1,9 GO!!! (Plus précisément, c'est l'exécutable dans foo.app/Contents/Resources/MacOS qui se développe, à partir de 1.1 MO à 1,9 GO.)
La même chose se passe lorsque j'essaie de signer/unsign binaire outil de support au lieu d'un .app.
Des idées?
Arrière-plan: C'est ma propre application; je n'essaie pas de la défaite de protection contre la copie ou quelque chose comme ça.
Je tiens à distribuer une application signée de sorte que chaque mise à jour de l'application n'a pas besoin de l'approbation de l'utilisateur lecture/écriture de l'application des entrées dans le Trousseau d'accès. Cependant, certaines personnes ont besoin de modifier l'application en y ajoutant leur propre dossier /Ressources. S'ils le font, la signature devient invalide, et l'application ne peut pas utiliser son propre Trousseau d'entrées.
L'application peut facilement détecter si cette situation s'était passé. Si l'application peut ensuite retirer sa signature, tout irait bien. Les gens qui font cette modification serait nécessaire de donner à l'modifié, maintenant-application non signée la permission d'utiliser le Trousseau d'accès, mais qui est très bien avec moi.
OriginalL'auteur user532477 | 2011-09-21
Vous devez vous connecter pour publier un commentaire.
Un peu en retard, mais j'ai mis à jour un domaine public de l'outil appelé
unsign
qui modifie les fichiers exécutables à effacer les signatures.https://github.com/steakknife/unsign
Oui, cela n'a rien à voir avec l'OP de la question, qui a à voir avec la suppression des signatures et en renonçant un bundle, et pas seulement un seul exécutable ou un fichier binaire.
OriginalL'auteur
Voici le code source pour
codesign
qui répertorie toutes les options, y compris ceux qui ne sont pas couverts par la ligne de commande-h
et de la page de man.Aussi, voici d'Apple note technique sur l'évolution récente de la signature de code fonctionne
OriginalL'auteur
Je suis d'accord qu'il y a quelque chose d'étrange se passe quand vous n'avez
--remove-signature
.Cependant, au lieu d'essayer de l'onu-code-signature, vous devez modifier la façon dont vos utilisateurs de mettre les fichiers supplémentaires dans le
Resources
. Au lieu de cela, désigner un certain chemin, généralementou peut-être
et demander à l'utilisateur de mettre des fichiers supplémentaires. Puis, dans votre code, vérifiez toujours que le répertoire en outre les fichiers dans le
Resources
quand vous en avez besoin pour lire un fichier.OriginalL'auteur Yuji
Je suis tombé sur cette question aujourd'hui. Je peux confirmer que le
--remove-signature
option pour Applecodesign
est (et reste, six ans après l'OP posé cette question) sérieusement buggy.Pour un peu de fond, Xcode (et Apple en ligne de commande outils de développement) d'inclure les
codesign
l'utilité, mais il n'est pas inclus un outil pour supprimer les signatures. Cependant, comme c'est quelque chose qui doit être fait, dans certaines situations, assez fréquemment, il est inclus un complètement sans-papiers option:codesign --remove-signature
qui (on suppose, étant donné le manque de documentation) devrait, ainsi, être assez explicites, mais malheureusement, il rarement fonctionne comme prévu sans un certain effort. Donc j'ai fini par écrire un script qui doit prendre soin de l'OP du problème, la mienne, et similaires. Si suffisamment de gens trouvent ici et le trouvez utile, faites le moi savoir et je vais le mettre sur GitHub ou quelque chose.OriginalL'auteur Geoff Nixon
Sur une deuxième lecture de cette question, une autre idée: peut-être une meilleure approche pour accomplir ce que le but ultime de la question est, serait de ne pas supprimer les signatures, mais des utilisateurs (via un script ou d'une manière transparente) re-signe l'application après la modification, à l'aide d'un ad-hoc signature. C'est,
codesign -fs - [app]
, je crois. Voir https://apple.stackexchange.com/questions/105588/anyone-with-experience-in-hacking-the-codesigning-on-os-xOriginalL'auteur Geoff Nixon
Je crois que vous pouvez supprimer la signature par la simple suppression de la _CodeSignature dossier dans le package de l'Application.
OriginalL'auteur BillyT2