Puis-je retirer une signature numérique d'une DLL?
Mon installateur construire des "signes" une DLL à l'aide d'un certificat de Signature de Code pendant le processus de génération.
j'ai remarqué que si j'essaie de construire deux fois dans la succession, la deuxième construction échoue parce que la DLL est déjà signé donc le code de signalisation étouffe. Évidemment, je peux corriger cela en signant une copie de la DLL dans la compilation, mais le problème m'a intrigué:
est-il possible de" désigner " une DLL, et si non, pourquoi pas...?
6 réponses
bien sûr que c'est possible, mais pas insignifiant.
bien qu'il soit plus facile de sauvegarder une copie de la DLL présignée.
Cette signature numérique n'est guère plus qu'une section supplémentaire ajouté à la fin d'un fichier PE. Vous pouvez écrire un programme qui supprime la signature, si vous voulez.
ce n'est pas aussi simple que de tronquer le fichier; vous devez supprimer les références à la signature dans l'en-tête du fichier. Il pourrait obtenir compliqué si la DLL a plusieurs signatures et que vous voulez en supprimer une.
le format D'un fichier PE est publiquement documenté ici
vous pouvez utiliser delcert.exe de ce XDA Forum post .
voici un petit outil qui dégrade (supprime) le signe numérique (Authenticode) à partir de fichiers exécutables comme *.EXE.* ,DLL.* ,mui, etc.
il est assez facile de retirer la signature d'un .dll fichier utilisant le ImageRemoveCertificate API.
vous n'avez aucune langue spécifiée dans vos tags mais cet article montre comment l'implémenter en C#. supprimer la signature numérique d'un fichier en utilisant C#
Autre que celle, si vous cherchez un outil simple pour faire le travail pour vous, vous pouvez utiliser FileUnsigner .
une autre option possible est de passer à L'indicateur .exe . Il est livré avec le Windows SDK et la signature d'un binaire qui a déjà été signé ne génère pas d'erreur. J'utilise signtool.exe dans mon processus de construction et n'ont aucune difficulté avec elle, même si quelque chose est déjà signé.
aussi, cochez la question Quelle est la principale différence entre le signcode.exe et signtool.exe?
vérifiez si votre outil de construction supporte "re-signing". Cela devrait remplacer toutes les signatures.
dans la négative, vous pouvez utiliser Stud_PE pour supprimer le bloc de signature. Ouvrez la DLL ou EXE dans Stud_PE, allez à l'onglet sections, faites un clic droit sur la section de signature numérique et sélectionnez "Supprimer la section". Toutefois, cela nécessite une interaction avec les utilisateurs. Les anciennes versions de l'outil pourrait détruire le fichier.