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...?

21
demandé sur Roddy 2008-12-04 19:14:50

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

7
répondu Die in Sente 2017-04-06 18:10:58

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.

25
répondu smartins 2012-04-06 15:42:31

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 .

12
répondu coolmine 2013-02-04 04:29:23
signtool remove /s C:\path\to.exe.or.dll

signtool est disponible dans Windows SDK, et doit être au moins à partir de Windows 8 SDK kit (version 6.2.9200.20789) pour avoir la commande remove prise en charge.

10
répondu vine'th 2018-06-18 18:01:07

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?

7
répondu jveazey 2017-05-23 12:32:17

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.

3
répondu Thomas Weller 2012-03-27 14:49:24