33 Stimmen

Kann ich eine digitale Signatur aus einer DLL entfernen?

Mein Installationsprogramm "signiert" eine DLL mithilfe eines Code Signing-Zertifikats während des Erstellungsprozesses.

Ich habe festgestellt, dass, wenn ich versuche, zweimal hintereinander zu bauen, der zweite Build fehlschlägt, weil die DLL bereits signiert ist, so dass signcode chokes. Offensichtlich kann ich dies beheben, indem eine Kopie der DLL in der Build signiert, aber das Problem fasziniert mich:

Ist es möglich, eine DLL zu "unsignieren", und wenn nicht, warum nicht...?

38voto

vine'th Punkte 4708
signtool remove /s C:\path\to.exe.or.dll

signtool ist im Windows SDK verfügbar und muss mindestens aus dem Windows 8 SDK-Kit (Version 6.2.9200.20789) stammen, um die remove Befehl unterstützt.

31voto

smartins Punkte 3758

Sie können delcert.exe von dieser Seite aus verwenden XDA-Forum-Beitrag .

Hier ist ein kleines Werkzeug, das digitale s aus ausführbaren PE-Dateien wie *.exe, *.dll, *.mui usw. entfernt.

15voto

coolmine Punkte 4299

Es ist ziemlich einfach, die Signatur aus einer .dll-Datei zu entfernen, indem man die ImageRemoveCertificate API.

Sie haben keine Sprache in Ihren Tags angegeben, aber dieser Artikel zeigt, wie man es in C# implementiert. Digitale Signatur aus einer Datei entfernen mit C#

Wenn Sie jedoch ein einfaches Tool suchen, das Ihnen die Arbeit abnimmt, können Sie Folgendes verwenden FileUnsigner .

10voto

jveazey Punkte 5290

Eine weitere Möglichkeit ist der Wechsel zum SignTool.exe . Es kommt mit dem Windows-SDK und das Signieren einer bereits signierten Binärdatei führt nicht zu einem Fehler. Ich verwende signtool.exe in meinem Erstellungsprozess und habe keine Schwierigkeiten damit, selbst wenn etwas bereits signiert ist.

Beachten Sie auch die Frage Was ist der Hauptunterschied zwischen signcode.exe und signtool.exe?

6voto

Die in Sente Punkte 9197

Sicher ist es möglich, aber nicht trivial.

Allerdings wäre es einfacher, eine Kopie der vordefinierten DLL zu speichern.

Diese digitale Signatur ist nicht viel mehr als ein zusätzlicher Abschnitt, der an das Ende einer PE-Datei angehängt wird. Sie könnten ein Programm schreiben, das die Signatur löscht, wenn Sie wollen.

Es ist nicht ganz so einfach, die Datei zu kürzen; Sie müssen Verweise auf die Signatur im Dateikopf entfernen. Es könnte kompliziert werden, wenn die DLL mehrere Signaturen hat und Sie nur eine entfernen wollen.

Das Format einer PE-Datei ist öffentlich dokumentiert hier

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X