Überprüfen der digitalen Signatur auf EXE
Meine .NET-exe-Datei ist signiert mit signtool.
Mit diesem code kann ich überprüfen Sie die Gültigkeit des Zertifikats selbst:
var cert = X509Certificate.CreateFromSignedFile("application.exe");
var cert2 = new X509Certificate2(cert.Handle);
bool valid = cert2.Verify();
Aber dieser prüft nur das Zertifikat selbst, und nicht die Unterschrift der EXE-Datei. Daher, wenn die EXE-Datei manipuliert wird, werden bei dieser Methode nicht erkannt werden.
Wie kann ich das überprüfen der Signatur?
X509Certificate.CreateFromSignedFile("").Verify()
?- .CreateFromSignedFile gibt eine Instanz von X509Certificate, und die haben nicht ein .Überprüfen Sie, Methode.
- Ok, dann noch eine blöde Idee: konstruiere
X509Certificate2
mithilfeX509Certificate
, nichtHandle
. Ich vermute:Verify
Methode sollten überprüfen, die Datei oder das Zertifikat wird throw exception (beim instanziieren?) wenn mit exe-Datei manipuliert wurde. Vielleicht haben Sie zur Umsetzung eigener Validierung Kette. - Die überprüfung der Signatur der EXE-Datei, indem Sie diese EXE-Datei keinen Sinn macht - wer entfernt die Signatur entfernen, überprüfen Sie, wie gut.
- Ich habe eine rein .Net-Lösung hier.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie Sie aufrufen (P/Invoke)
WinVerifyTrust()
Funktion vonwintrust.dll
. Es gibt (soweit ich weiß) keine alternative sind, verwaltet .NET.Finden Sie die Dokumentation dieser Methode hier.
Schon jemand diese Frage gestellt, auf SO. Es wurde nicht akzeptiert, es sollte aber richtig sein (habe ich nur durchgeblättert). Werfen Sie einen Blick.
Könnten Sie auch einen Blick auf diese Anleitung aber Sie sind wirklich das gleiche zu tun.
Suchte ich in github gefunden und Azure von Microsoft C# code, verwendet die PowerShell-Objekts prüfen, ob eine gültige Authenticode-Signatur.
Zur überprüfung der Integrität der signierten .exe-Datei, die wir verwenden können, StrongNameSignatureVerificationEx Methode:
Aber es ist nicht genug. Es ist möglich, entfernen der Signatur und dann apply/re-schaffen es wieder! (es gibt eine Menge von Werkzeugen zu tun) In diesem Fall müssen Sie die öffentlichen Schlüssel Ihrer Unterschrift irgendwo (als Ressource) und dann vergleichen Sie es mit der neuen/aktuellen öffentlichen Schlüssel. mehr info hier