Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Wie finde ich heraus, WER eine .exe-Datei signiert hat (https://www.delphipraxis.net/133516-wie-finde-ich-heraus-wer-eine-exe-datei-signiert-hat.html)

mabuch 3. Mai 2009 19:17


Wie finde ich heraus, WER eine .exe-Datei signiert hat
 
Ich habe unter http://www.delphipraxis.net/internal...t.php?p=329268 bereits eine Lösung gefunden, wie ich herausfinden kann, OB ein Programm gültig signiert wurde. Ich habe dies Unit auch schon ausprobiert und sie scheint zu funktionieren.

Meine Frage ist nun, wie ich mit Delphi ein Programm schreiben kann, das herausfindet, WER die Anwendung signiert hat.

blackdrake 3. Mai 2009 23:17

Re: Wie finde ich heraus, WER eine .exe-Datei signiert hat
 
Meinst du mit WER den Wert des CNs oder die Person, die das Zertifikat hinzugefügt hat (könnten ja zwei unterschiedliche sein).

mabuch 4. Mai 2009 22:56

Re: Wie finde ich heraus, WER eine .exe-Datei signiert hat
 
Ich weiß nicht was ein CN ist.
Ich meine den Herausgeber der Software. Wenn ich meine Software signiere steht nach einem Rechtsklick mit der Maus auf die exe-Datei unter 'Eigenschaft' im Reiter 'digitale Signatur' mein Name als 'Signaturgeber'.
Diesen Eintrag meine ich.

Fridolin Walther 5. Mai 2009 05:59

Re: Wie finde ich heraus, WER eine .exe-Datei signiert hat
 
Deine Freunde (und zwar alle) sind:
MSDN-Library durchsuchenCryptQueryObject, MSDN-Library durchsuchenCryptMsgGetParam, MSDN-Library durchsuchenCertFindCertificateInStore sowie MSDN-Library durchsuchenCertGetNameString.

mabuch 5. Mai 2009 08:39

Re: Wie finde ich heraus, WER eine .exe-Datei signiert hat
 
Schon mal danke für die Links zu MS. Ich werde versuchen, aus denen schlau zu werden.
Sollte hier jemand bereits eine Lösung für Delphi, die die oben genannten Befehle nutzt, entwickelt haben, würde ich mich natürlich sehr über ein entsprechendes Post freuen.

quendolineDD 5. Mai 2009 09:12

Re: Wie finde ich heraus, WER eine .exe-Datei signiert hat
 
Einfach nur die Header übersetzen.
Hier zum Beispiel für CryptQueryObject mal schnell getippt:

Delphi-Quellcode:
const
  crypt32 = 'Crypt32.dll';


  function CryptQueryObject(ObjectType : Cardinal; AObject : Pointer;
    ExpectedContentTypeFlags : Cardinal; ExpectedFormatTypeFlags : Cardinal;
    Flags : Cardinal; MsgAndCertEncodingTyper : PCardinal; ContentType : PCardinal;
    FormatType : PCardinal; CertStore : Pointer; Msg : Pointer; Context : PPointer) : BOOL;
      stdcall; external crypt32 name 'CryptQueryObject';

CodeX 5. Mai 2009 19:45

Re: Wie finde ich heraus, WER eine .exe-Datei signiert hat
 
Liste der Anhänge anzeigen (Anzahl: 1)
Also wirklich "einfach" fand ich das nicht. Deshalb teile ich hier mal meine Arbeit.
Die angefügte Unit uCertTest basiert auf auf dem Posting von TKC sowie einem Eintrag bei experts-exchange.

Du brauchst daraus die Funktion GetInfoFromCert.
Also etwa so:
Delphi-Quellcode:
sName := GetInfoFromCert(sFile, cCertSubjectName);
sAussteller := GetInfoFromCert(sFile, cCertIssuerName);
Weitere Erläuterungen kann ich aus Zeitmangel gerade nicht liefern. Sollte aber selbsterklärend sein, wenn Du Dir die Unit genauer anschaust.
Habe ich produktiv im Einsatz, sollte also funktionieren. ;)

mabuch 19. Mai 2009 13:01

Re: Wie finde ich heraus, WER eine .exe-Datei signiert hat
 
Vielen Dank für die Antwort. Ich hoffe, dass die anderen genauso helfen kann wie mir.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:02 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz