Est-il possible d'ajouter des sections à un exécutable déjà lié? J'essaie de signer un code exécutable OS X, basé sur le Apple instructions. Ceux-ci comprennent l'instruction pour créer une section appropriée dans le binaire à signer, en ajoutant des arguments aux options de l'éditeur de liens:Comment puis-je ajouter des sections à un exécutable existant (OS X)?
-sectcreate __TEXT __info_plist Info.plist_path
Mais: L'exécutable que je suis en train de signer est produit en utilisant Racket (un schéma implémentation), qui assemble un exécutable autonome à partir du code Racket/scheme en clonant le "réel" exécutable de la raquette et en éditant le fichier Mach-O directement.
Donc la question est: y a-t-il un moyen de continuer à éditer cet exécutable, pour ajouter la section qui est requise pour la signature de code?
En utilisant ld
ne fonctionne pas quand il est utilisé de manière évidente:
% ld -arch i386 -sectcreate __TEXT __info_plist ./hello.txt racket-executable
ld: in racket-executable, can't link with a main executable
%
Cela semble assez juste, je suppose. Libtool n'a aucune option à la recherche probable, et la commande redo_prebinding
(qui est au moins une commande pour éditer les exécutables).
Les deux possibilités suggérées par la liste de raquette pertinente étaient (i) d'étendre l'outil de compilation de raquette pour ajuster la chirurgie qui est faite sur l'exécutable (faisable, mais effrayant), ou (ii) pour créer une raquette personnalisée exécutable qui a la section désirée déjà en place. Les deux semblent des solutions de masse-écrou. La liste macosx-dev
n'a pas trouvé de suggestions.
Comment avez-vous réussi à ajouter une nouvelle section à un fichier exécutable existant? Je suis maintenant confronté au même problème = [merci! – Rouki
Je ne l'ai jamais résolu, mais à la fin, j'ai tout simplement esquivé l'exigence (c'est moche mais dans ce contexte supportable simplement appuyer sur le bouton au démarrage qui dit 'oui, permettre à l'application non signée X de s'exécuter'). –
Seamus Brady et Matthew Flatt ont élaboré une procédure qui est décrite dans la liste des utilisateurs de raquettes (https://groups.google.com/forum/#!topic/). raquette-utilisateurs/OQnOlRGTCOM) –