Kann ich eine digitale Signatur aus einer DLL entfernen?
Mein installer bauen "Zeichen" einer DLL mithilfe eines Code Signing-Zertifikats während des build-Prozesses.
Habe ich bemerkt, dass wenn ich versuche, zweimal in Folge, den zweiten build schlägt fehl, da die DLL bereits unterzeichnet, so dass signcode drosseln. Offensichtlich kann ich dieses Problem beheben, indem Unterzeichnung eine Kopie der DLL in das bauen, aber das problem fasziniert mich:
Ist es möglich, "unsign" eine DLL, und wenn nicht, warum nicht...?
InformationsquelleAutor der Frage Roddy | 2008-12-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sicher, es ist möglich, aber nicht trivial.
Obwohl es einfacher wäre, speichern Sie eine Kopie der presigned DLL.
Diese digitale Signatur ist ein wenig mehr als ein extra-Abschnitt am Ende einer PE-Datei. Man könnte ein Programm schreiben, dass die Signatur gelöscht, wenn Sie möchten.
Es ist nicht ganz so einfach, wie er die Datei, die Sie entfernen Verweise auf die Signatur in der Datei-header. Könnte es kompliziert werden, wenn die DLL hat mehrere Signaturen, und Sie wollen einfach nur zu entfernen.
Format einer PE-Datei ist öffentlich dokumentiert hier
InformationsquelleAutor der Antwort Die in Sente
Können Sie verwenden delcert.exe aus diesem XDA Forum posten.
InformationsquelleAutor der Antwort smartins
Es ist ziemlich leicht zu entfernen, die Unterschrift von einem .dll-Datei mit der ImageRemoveCertificate API.
Haben Sie keine Sprache angegeben, die in Ihre tags, aber dieser Artikel zeigt, wie es zu implementieren in C#. Entfernen Sie die digitale Signatur aus einer Datei mit C#
Andere als, dass, wenn Sie auf der Suche nach einem einfachen Werkzeug, um die Arbeit zu tun für Sie ist, können Sie FileUnsigner.
InformationsquelleAutor der Antwort coolmine
signtool ist verfügbar in Windows SDK, und muss mindestens aus dem Windows 8 SDK kit (version 6.2.9200.20789) zu haben, die
remove
Befehl unterstützt.InformationsquelleAutor der Antwort vine'th
Eine andere Möglichkeit ist die Umstellung auf die SignTool.exe. Es kommt mit der Windows SDK und die Unterzeichnung einer Binärdatei, die bereits unterzeichnet worden, ohne dass ein Fehler generiert. Ich benutze signtool.exe in meinem build-Prozess und haben keine Schwierigkeiten mit ihm, auch wenn etwas bereits unterzeichnet.
Schauen Sie sich auch die Frage Was ist der größte Unterschied zwischen signcode.exe und signtool.exe?
InformationsquelleAutor der Antwort jveazey
Prüfen Sie, ob Ihr build-tool unterstützt die "Re-signieren". Dies sollte als Ersatz für alle bestehenden Signaturen.
Wenn nicht, können Sie Stud_PE entfernen Sie die Signatur-block.
Öffnen Sie die DLL-oder EXE-Datei in Stud_PE, gehen Sie auf die Registerkarte Abschnitte der rechten Maustaste auf die digitale Signatur-Abschnitt, und wählen Sie "Löschen". Aber das braucht Benutzer-Interaktion. Alte Versionen des Tools könnte zerstören Sie die Datei.
InformationsquelleAutor der Antwort Thomas Weller