AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

exe ohne Zeitstempel etc. vergleichen

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

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

exe ohne Zeitstempel etc. vergleichen

  Alt 27. Aug 2012, 14: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.544 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: exe ohne Zeitstempel etc. vergleichen

  Alt 27. Aug 2012, 14: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.735 Beiträge
 
Delphi 2007 Professional
 
#3

AW: exe ohne Zeitstempel etc. vergleichen

  Alt 27. Aug 2012, 15: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.544 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: exe ohne Zeitstempel etc. vergleichen

  Alt 27. Aug 2012, 15: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
5.300 Beiträge
 
Delphi 12 Athens
 
#5

AW: exe ohne Zeitstempel etc. vergleichen

  Alt 27. Aug 2012, 15: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.544 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: exe ohne Zeitstempel etc. vergleichen

  Alt 27. Aug 2012, 15: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
mjustin

Registriert seit: 14. Apr 2008
3.005 Beiträge
 
Delphi 2009 Professional
 
#7

AW: exe ohne Zeitstempel etc. vergleichen

  Alt 27. Aug 2012, 17:20
wenn ich das Projekt zweimal kompiliere, ohne etwas zu ändern, möchte ich als Ergebnis "gleich", unabhängig von irgendwelchen Zeitstempeln etc.

Nach dieser Quelle werden beim Kompilieren zufällige Bytes im Speicher nicht (zum Beispiel mit Nullen) initialisiert, und können daher bei jedem Buildvorgang neue Werte enthalten:

http://stackoverflow.com/a/2014040/80901

Zitat:
Part of the problem your seeing, IIRC, is that the compiler doesn't zero out memory before doing a compile/build. Thus anything left in uninitialized memory becomes filler in the output for alignment purposes.
Michael Justin
  Mit Zitat antworten Zitat
WM_CLOSE

Registriert seit: 12. Mai 2010
Ort: königsbronn
398 Beiträge
 
RAD-Studio 2009 Pro
 
#8

AW: exe ohne Zeitstempel etc. vergleichen

  Alt 27. Aug 2012, 17:47
Du könntest auch im Precompile-Script einen Hash aller *.pas + *.dfm Dateien machen und diesen Hash als Resource speichern. Reagiert dann aber auch auf Kommentaränderungen, die keine Auswirkungen auf den Code haben.
Alternaiv die SVN(/Git/Sonstige)-Revision ablegen.

Ich gehe jetzt davon aus, dass es dein Prog ist und mit Delphi programmiert. Und dass du das Programm vergleichen willst, nicht das Ergebnis(exe).
Delphi programming
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#9

AW: exe ohne Zeitstempel etc. vergleichen

  Alt 27. Aug 2012, 18:18
Ich würde folgendes vorschlagen:
Du machst keine Hash Überprüfung über die ganze Executable, die selbst aus verschiedensten Daten - mitunter Code - besteht, sondern nur nen Hash Vergleich mit den Code Sections!
(".text" / "text" / ".code" / "code"...)
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz