Seite 1 von 1
Einkompilierte Kennung (publicKeyToken) in PB-Executables
Verfasst: 04.12.2014 17:11
von Shamos
Hallo liebe Gemeinde,
Jedesmal wenn man ein executable erstellt, wird im binary jeweils am Ende des binarys ein XML-Code mit eingefügt welcher wie folgt ausschaut:
Code: Alles auswählen
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="1.0.0.0" processorArchitecture="amd64" name="CompanyName.ProductName.YourApp" type="win32" />
<description></description>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="amd64" publicKeyToken="################" language="*" />
</dependentAssembly>
</dependency>
</assembly>
Die Zeile mit dem publicKeyToken habe ich dahingehend geändert das ich die # Zeichen
eingefügt habe anstelle der sonst darin befindlichen Kennung. Nun würde mich ganz speziell
interessieren was genau diese/s publicKeyToken/Kennung bezeichnet, wozu steht die/das da?
Re: Einkompilierte Kennung (publicKeyToken) in PB-Executable
Verfasst: 04.12.2014 17:13
von RSBasic
Re: Einkompilierte Kennung (publicKeyToken) in PB-Executable
Verfasst: 04.12.2014 17:30
von Shamos
@RSBasic:
Danke Dir erst mal für deine Antwort.
Unter der besagten URL lese ich als Antwort
Ruft das öffentliche Schlüsseltoken der Assembly ab oder legt es fest, d. h. die letzten 8 Bytes
des SHA-1-Hashs des öffentlichen Schlüssels, mit dem die Assembly signiert ist.
So möge man mir meine Unwissenheit darüber vergeben, das ich nun nicht wirklich
weiss was genau es mit dieser Assembly auf sich hat. Soweit ich vermute,
hat das wohl irgendwas mit einer Signatur zu tun das es sich um ein Windowsprogramm handelt???
Nur, wozu das? Von daher, wäre eine kurze Aufklärung hierzu evtl. vorteilhaft

Re: Einkompilierte Kennung (publicKeyToken) in PB-Executable
Verfasst: 04.12.2014 17:33
von NicTheQuick
Ich nehme an diese Signatur berechnet sich aus dem Hashwert des Binaries. Und wenn dieser Hashwert dem Microsoft-Server bekannt ist und du sie von denen zertifiziert gelassen hast, dann wird der Anwendung auch vertraut, sodass keine komischen Meldungen von Windows kommen, weil eine Executable von einem unbekannten Hersteller kommt.
Ich denke das steckt da irgendwie dahinter. Aber genau weiß ich es auch nicht.
Re: Einkompilierte Kennung (publicKeyToken) in PB-Executable
Verfasst: 04.12.2014 17:38
von _JON_
Von den Microsoft.Windows.Common-Controls gibt es mehrere Versionen.
Die liegen alle in deinem C:\Windows\WinSxS Ordner.
Deine exe legt im Manifest (XML der exe) fest welche Version sie benötigt.
Re: Einkompilierte Kennung (publicKeyToken) in PB-Executable
Verfasst: 04.12.2014 18:08
von Shamos
Ich bedanke mich erst mal für eure Antworten.
@_JON_:
Mit anderen Worten, würde ich diese Kennung in der EXE mit einem
Hex-Editor verändern, würde das Programm vermutlich Probleme machen
sofern es dann nicht gleich vom OS aussortiert wird?
Re: Einkompilierte Kennung (publicKeyToken) in PB-Executable
Verfasst: 04.12.2014 18:41
von _JON_
Ja, genau Windows sucht an Hand dieser Kennung die richtige Datei, in dem Fall comctl32.dll.
Wenn Du es nun änderst, wird die exe nicht mehr starten können.
Re: Einkompilierte Kennung (publicKeyToken) in PB-Executable
Verfasst: 04.12.2014 19:39
von ts-soft
Resource 24 (Manifest)
Hier wird zum Beispiel der "XP-Style" festgelegt, bzw. welche CommonConstrols-Datei genutzt werden soll.
Warum jemand diesen Inhalt manipulieren sollte, ist mir suspekt, aber in diesem Falle, wird die Manifest einfach
ignoriert.
Sie kann auch Informationen darüber enthalten, welche Ausführungsrechte usw. erforderlich sind.
Unter XP ist sie nur für das Aussehen erforderlich. Seit Vista hat sie auch einfluß auf Kompatibilitätsmodus.
PS: Diese Datei kann auch als Extra-Datei: "exename.extension".manifest beigefügt sein.
PublicKeyToken ist immer derselbe Wert, solange dieselbe Common-Datei verwendet wird. Es gibt nicht
"exespezifisches", was von PB generiert wird.