2012-03-29 1 views
3

Ich habe die folgende Anforderung, eine Binärdatei mit einem Zertifikat, aber ohne signtool.exe unterzeichnen; Die Idee wäre, dies über Code zu tun.Ist es möglich, eine Binärdatei über .NET-Code zu signieren? (no signntool.exe)

Wissen Sie, ob es möglich ist?

+0

duplizieren? http://stackoverflow.com/questions/692565/how-do-you-programmatical-resign-a-net-assembly-with-a-strong-name – Nikolay

+0

In der Tat. Danke, dass du das gesehen hast. Wie soll ich vorgehen? lösche diese Frage oder lasse sie offen, da sie nicht auf die gleiche Art und Weise gefragt wird? – Vinzz

+0

Kein Duplikat. 'signtool.exe' (hier referenziert) erzeugt Authenticode-Signaturen (für jede PE-Datei); "starke Benennung" (in der anderen Frage erwähnt) verwendet "sn.exe" und ist nur für verwaltete Assemblys. –

Antwort

4

Sie müssen die Funktionen SignerSign oder SignerSignEx verwenden, die aus mssign32.dll exportiert werden.

diese zu verwenden, werden Sie den SIGNER_SUBJECT_INFO, SIGNER_FILE_INFO, SIGNER_CERT, verwaltet Versionen von SIGNER_SIGNATURE_INFO usw. structs definieren müssen, dann die P korrekt angeben/Signatur für die native Methode aufrufen.

In der Mitte durch this blog post gibt es ein C++ - Beispiel des Aufrufs SignerSignEx; Mark hat es in diesem StackOverflow answer zu C# portiert.

+0

danke, ich werde es versuchen – Vinzz

+0

Hat es nicht funktioniert in C# (nicht genug Zeit zu verbringen, war an einer sehr kurzen Frist), aber es funktionierte perfekt in guten alten C++ . Vielen Dank! – Vinzz

+0

Wenn Sie Windows 8 verwenden, verwenden Sie SignerSignEx2 –