![]() |
Code Signing - Veränderungen erkennen
Hallo!
Im Moment beschäftige ich mich mit dem Thema Code Signing. Der ![]() Das Erstellen eines Zertifikates und die Dateisignierung funktioniert auch prima. Ich bin allerdings davon ausgegangen, dass sich mit dem Zertifikat auch Veränderungen im Programm erkennen lassen. Ich habe also ein kleines Hallo-Welt-Programm geschrieben, die EXE signiert und anschließend mit einem HEX-Editor ein Byte verändert. Trotz dieser Änderung zeigt mir
Code:
an:
signtool.exe verify /pa /v HalloWelt_verändert.exe
"Successfully verified: HalloWelt_verändert.exe Wie kann das sein? Anhand des Hashes müsste doch eigentlich die Änderung der Datei erkannt werden, oder nicht? Habe ich das Prinzip des Code Signings falsch verstanden und Änderungen werden gar nicht erkannt? Wenn eine Signierte Datei dennoch beliebig manipuliert werden kann, wäre das ganze Signing doch ziemlich sinnlos oder nicht? Was mache ich falsch bzw. was habe ich falsch verstanden? Besten Dank Ares |
Re: Code Signing - Veränderungen erkennen
[geraten]
Ich könnte mir vorstellen, das nicht die ganze PE-Datei signiert wird, sondern nur die relevanten Teile (Daten- und Codesegmente, Ressourcen, usw.). Probiere es mal an einer Stelle, die garantiert zum Programm gehört, zB. einem String, der von dir definiert wurde. |
Re: Code Signing - Veränderungen erkennen
Hallo BUG, du hast gut geraten :-)
Zuvor hatte ich einfach das letzte Byte der Datei gekippt, dass scheinbar nicht von der Signatur erfasst wird. Ändert man andere Stellen liefert SignTool.exe "Die digitale Signatur des Objektes konnte nicht bestätigt werden." Gibt es nun eine Methode mit der eine signierte EXE ihre eigene Signatur überprüfen kann? Kann also ein Programm selber feststellen ob es verändert wurde? |
Re: Code Signing - Veränderungen erkennen
Zitat:
und die man dann auch selber aufrufen kann, aber notfalls könnte man die signtool.exe mit ausliefen und diese via ShellExecute/CreateProcess aufrufen. PS: Wenn du diese Signierung nur zur Erkennung auf Veränderungen benutzen willst und dir kein 1000%iger Schutz auf absichtliche Änderungen von Nöten ist, dann ginge auch noch sowas. ![]() Dieses legt einen Hash über die gesamte EXE innerhalb sich selber ab und prüft diese bei Programmstart. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz