2009-07-14 7 views
0

Ich möchte eine signierte ausführbare Datei überprüfen. Die Anforderung besteht darin, zu validieren, dass die ausführbare Datei selbst gültig ist und woher sie stammt (wahrscheinlich vom Betreff des Zertifikats). Der Zertifikatstyp ist PKCS.Signatur auf EXE mit CertGetCertificateChain validieren

ich hier einen ähnlichen Eintrag gefunden, Validate Authenticode signature on EXE - C++ without CAPICOM

die Microsoft-Dokumentation unter anderem scheint CertGetCertificateChain zu zeigen, aber die Beispiele sind in der Regel mit Zertifikaten arbeiten, die in einem Geschäft sind. Kann jemand eine signierte ausführbare Datei mit CertGetCertificateChain und verwandten APIs validieren?

Antwort

0

Können Sie es ausarbeiten? Die Frage, die Sie verlinkt haben, scheint alle Antworten zu enthalten, die Sie benötigen.

Sie geben an, dass "die Beispiele mit Zertifikaten arbeiten, die sich in einem Geschäft befinden", was bedeutet, dass die ausführbare Datei mit einem Zertifikat signiert sein muss, das mit einem Stammzertifikat im vertrauenswürdigen Speicher der Maschine verknüpft ist.

Dies ist wahr; Es gibt keinen Weg, dem zu vertrauen, dass der Unterzeichner ist, wer er sagt, er ist, und keine Möglichkeit für den Anbieter, das Zertifikat zu widerrufen, wenn es betrügerisch verwendet wird.

Also, WinVerifyTrust ist der richtige Weg, um eine signierte ausführbare Datei zu validieren. Es ist eine schreckliche API, also sei vorsichtig. CryptQueryObject und verwandte APIs geben Ihnen weitere Informationen, z. B. den Namen der Person oder Firma, für die das Zertifikat ausgestellt wurde.

+0

Zwei Stücke von Informationen sind erwünscht. - Ist die App signiert? - Wer ist der Unterzeichner? Um die ausführbare Datei zu überprüfen WinVerifyTrust funktioniert. Wie auch immer, blieb hängen, wie man weiß, wer der Unterzeichner ist. Jemand (MSalters) hat auf den ursprünglichen Beitrag geantwortet, dass CertGetCertificateChain hilfreich wäre. Es konnte jedoch nicht herausgefunden werden, wie von einer ausführbaren Datei auf der Festplatte zu allen ungeraden Param-Typen von CertGetCertificateChain überzugehen ist. – cobaia

+0

es klingt wie Josh K hat dich in die richtige Richtung gezeigt. Wenn nicht, kann ich alten Code, den ich geschrieben habe, ausgraben und ein Sample erstellen. WinVerifyTrust ist der kritische Schritt; darüber hinaus sind es nur ein paar sprünge, die in msdn und ähnlich erklärt werden. –

0

Ich habe diese Frage some time ago gestellt. Ich hatte deine genauen Anforderungen. Es gibt Beispielcode, der Ihnen helfen wird. Habe Spaß!!

+0

Großartig. Einer der Links in einem Kommentar (http://support.microsoft.com/kb/323809) ist sehr gut. Danke! – cobaia