Frage

Gibt es eine Möglichkeit, den gleichen Code zu zwingen, die gleichen binären in Visual C ++ zu produzieren? Schalten Sie den Zeitstempel in der PE oder zwingen, den Zeitstempel in der PE einige festen Wert zu sein, mit anderen Worten?

War es hilfreich?

Lösung 2

Ich nehme an, Sie ein Dienstprogramm schreiben könnte das PE zu öffnen, die Prüfsumme auf 0 gesetzt, stellen Sie den Zeitstempel auf das, was Sie möchten, neu berechnen die crc, dann schreiben Sie es wieder heraus. Es wäre schön, wenn es ein offizieller Weg ist perfekt binäre Reproduzierbarkeit zu gewährleisten, though.

Für weitere Informationen: http://msdn.microsoft.com/en-us/magazine/cc301805. aspx

Andere Tipps

Es ist nicht nur ein Zeitstempel - es gibt eine eingebettete GUID für PDB Anpassung verwendet - wie John Robbins erklärt .

Auch darüber hinaus gibt es einfach keine Möglichkeit, den Compiler zu erzwingen konsistente Ergebnisse zu erzeugen, wie Jim Griesmer erklärt -

  

Compiler Autoren sind weit mehr daran interessiert, bei der Erzeugung korrekt funktionierender Code und es schnell zu erzeugen als die gewährleistet, was auch immer erzeugt wird, wird gleich auf der Festplatte angelegt. Aufgrund der zahlreichen und vielfältigen Methoden und Implementierungen für die Code-Optimierung, ist es immer möglich, dass ein Build mit einem wenig mehr Zeit, am Ende etwas mehr oder anders als anderer Build tat zu tun. Somit könnte das Endergebnis eine andere Gruppe von Bits, die für das, was ist die gleiche Funktionalität.

So Funktion und Abschnitt Ordnung nicht garantiert konsequent in der resultierenden PE bestellt werden. Ein Beispiel hierfür ist bei der Verbindung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top