Einkompilierte Kennung (publicKeyToken) in PB-Executables

Für allgemeine Fragen zur Programmierung mit PureBasic.
Shamos
Beiträge: 32
Registriert: 12.11.2014 09:44

Einkompilierte Kennung (publicKeyToken) in PB-Executables

Beitrag 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?
Windows 8.1 x64 | PureBasic 5.31 x64 | Dell Inspiron 3847 | i5-4440 3.1Ghz | 8GB DDR3 | Nvidia Geforce 625
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Einkompilierte Kennung (publicKeyToken) in PB-Executable

Beitrag von RSBasic »

Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Shamos
Beiträge: 32
Registriert: 12.11.2014 09:44

Re: Einkompilierte Kennung (publicKeyToken) in PB-Executable

Beitrag 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 :)
Windows 8.1 x64 | PureBasic 5.31 x64 | Dell Inspiron 3847 | i5-4440 3.1Ghz | 8GB DDR3 | Nvidia Geforce 625
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Einkompilierte Kennung (publicKeyToken) in PB-Executable

Beitrag 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.
Benutzeravatar
_JON_
Beiträge: 389
Registriert: 30.03.2010 15:24

Re: Einkompilierte Kennung (publicKeyToken) in PB-Executable

Beitrag 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.
PureBasic 5.46 LTS (Windows x86/x64) | windows 10 x64 Oktober failure
Shamos
Beiträge: 32
Registriert: 12.11.2014 09:44

Re: Einkompilierte Kennung (publicKeyToken) in PB-Executable

Beitrag 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?
Windows 8.1 x64 | PureBasic 5.31 x64 | Dell Inspiron 3847 | i5-4440 3.1Ghz | 8GB DDR3 | Nvidia Geforce 625
Benutzeravatar
_JON_
Beiträge: 389
Registriert: 30.03.2010 15:24

Re: Einkompilierte Kennung (publicKeyToken) in PB-Executable

Beitrag 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.
PureBasic 5.46 LTS (Windows x86/x64) | windows 10 x64 Oktober failure
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Einkompilierte Kennung (publicKeyToken) in PB-Executable

Beitrag 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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten