AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

exe ohne Zeitstempel etc. vergleichen

Ein Thema von uligerhardt · begonnen am 27. Aug 2012 · letzter Beitrag vom 27. Aug 2012
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.704 Beiträge
 
Delphi 2007 Professional
 
#1

exe ohne Zeitstempel etc. vergleichen

  Alt 27. Aug 2012, 15:09
Hallo zusammen!

Ich möchte zwei Kompilate eines Projekts daraufhin vergleichen, ob sie den selben Objektcode (?) enthalten. D.h. wenn ich das Projekt zweimal kompiliere, ohne etwas zu ändern, möchte ich als Ergebnis "gleich", unabhängig von irgendwelchen Zeitstempeln etc. Wenn ich vor dem zweiten Kompilieren etwas Relevantes am Code ändere, soll "ungleich" herauskommen. Scheinbar würde das mittels dumpbin /rawdata funktionieren - siehe hier. Leider habe ich kein dumpbin.exe und würde auch ungern extra deswegen ein VS Express installieren. Ich hab auch mal etwas mit tdump.exe herumprobiert, aber das unterdrückt mir auch die relevanten Änderungen. Hat jemand eine Idee?
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.310 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: exe ohne Zeitstempel etc. vergleichen

  Alt 27. Aug 2012, 15:57
Ohne jetzt groß darüber nachgedacht zu haben: evtl. genügt es bereits, bei beiden Dateien den PE-Header "einfach" zu überspringen?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.704 Beiträge
 
Delphi 2007 Professional
 
#3

AW: exe ohne Zeitstempel etc. vergleichen

  Alt 27. Aug 2012, 16:10
Ohne jetzt groß darüber nachgedacht zu haben: evtl. genügt es bereits, bei beiden Dateien den PE-Header "einfach" zu überspringen?
Ein fc /b liefert
Code:
00000108: 2F 6F
00000109: 7E 68
00016604: 6E D4
00016605: 80 73
00016624: 6E D4
00016625: 80 73
0001666C: 6E D4
0001666D: 80 73
0001668C: 6E D4
0001668D: 80 73
000166A4: 6E D4
000166A5: 80 73
000166BC: 6E D4
000166BD: 80 73
000166D4: 6E D4
000166D5: 80 73
000166EC: 6E D4
000166ED: 80 73
00016704: 6E D4
00016705: 80 73
0001671C: 6E D4
0001671D: 80 73
00016734: 6E D4
00016735: 80 73
0001674C: 6E D4
0001674D: 80 73
bei einem Exe der Größe $17C00, also scheinbar ein Unterschied am Anfang und einer eher am Ende? Meine Experimente mit tdump haben auch immer Unterschiede bei zwei Time Stamps ergeben.
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.310 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: exe ohne Zeitstempel etc. vergleichen

  Alt 27. Aug 2012, 16:14
Dann müsste man wohl über die Dokumentation des Dateiformats (es sei denn, man hat das zufällig komplett im Kopf) herauszufinden versuchen, was genau an den entsprechenden Stellen steht und diese dann vom Vergleich ausnehmen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
4.862 Beiträge
 
Delphi 10.1 Berlin Professional
 
#5

AW: exe ohne Zeitstempel etc. vergleichen

  Alt 27. Aug 2012, 16:53
Wie wäre es mit einem Hash vergleich ? MD5 o.ä... ? Sind sie gleich, sind die Dateien gleich...
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.310 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: exe ohne Zeitstempel etc. vergleichen

  Alt 27. Aug 2012, 16:57
Es geht doch nicht darum, wie verglichen werden soll, sondern was. Ein Hash, der etwas auf sich hält, liefert doch auch nur dann gleiche Ergebnisse, wenn beide Dateien Byte für Byte gleich sind, und das sind sie ja nicht.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
4.862 Beiträge
 
Delphi 10.1 Berlin Professional
 
#7

AW: exe ohne Zeitstempel etc. vergleichen

  Alt 27. Aug 2012, 17:02
Zitat:
Ich möchte zwei Kompilate eines Projekts daraufhin vergleichen, ob sie den selben Objektcode (?) enthalten. D.h. wenn ich das Projekt zweimal kompiliere, ohne etwas zu ändern, möchte ich als Ergebnis "gleich", unabhängig von irgendwelchen Zeitstempeln etc
...sollte doch mit MD5 machbar sein. Von jeder EXE den Hash vergleichen. Wird der gleiche Quellcode kompiliert ist der Hash gleich. Voraussetzung: Die Versionsinformationen (Build) wird nicht erhöht. Dann würden sie sich unterscheiden.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.939 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: exe ohne Zeitstempel etc. vergleichen

  Alt 27. Aug 2012, 17:02
Joar, also entweder läßt man die unerwünschten Bereiche von der Berechnung des Hash's aus, oder man füllt/überschreibt die unerwünschten Bereiche mit definierten Werten und berechnet dann den Hash über alles.

@haentschman: Delphi schreibt den Compierzeitpunkt mit rein und der ist jedesmal anders.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
4.862 Beiträge
 
Delphi 10.1 Berlin Professional
 
#9

AW: exe ohne Zeitstempel etc. vergleichen

  Alt 27. Aug 2012, 17:05
Zitat:
Delphi schreibt den Compierzeitpunkt mit rein und der ist jedesmal anders.
...echt jetzt ? Dann ist es nicht so einfach...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.939 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: exe ohne Zeitstempel etc. vergleichen

  Alt 27. Aug 2012, 17:20
Ja, früher stand zwar da im PE-Header, wo der Wert reingehört, ein "MagicValue" und die Zeit mußte man sich dann an anderer Stelle in der Datei suchen, aber seit einer Weile schreiben die es auch endlich ordentlich rein. (wer es vorher schon richtig drin haben wollte, der konnte sich z.B. von den DDevExtensions helfen lassen)

Du kannst aber die Datei in den RAM laden, die PE-Header durchgehn, dann eben die entsprechenden Stellen überschreiben und eventuell auch noch in den Resourcen die VersionsInfo entfernen/überschreiben, vor dem Vergleichen/Haschen.

Bzw. man kann die EXE ja auch in ihre Einzelteile zerlegen und jede Section einzeln haschen (notfalls dann noch zusammenrechnen).
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu (27. Aug 2012 um 17:33 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf