【发布时间】:2009-12-01 22:55:49
【问题描述】:
出于二进制/源代码验证的目的,我希望能够在同一台计算机上相隔 2 周进行两次编译,并使二进制文件相同,从而通过一些校验和测试。
到目前为止,我发现时间戳很可能会由编译器写入二进制文件。我可以通过比较这篇 msdn 文章中的 dumpbin /rawdata 结果来解决这个问题。
http://support.microsoft.com/kb/164151
但是,dumpbin 结果在大约十几个地方仍然存在差异,并且差异似乎仍然是某种时间戳(例如从 A1 73 更改为 C4 76)。
我假设这是 delphi 编译器放入代码/数据部分的时间戳,但我找不到发生这种情况的位置或如何将其关闭。摆弄各种编译器/链接器选项并没有改变这种行为。
任何帮助将不胜感激。
【问题讨论】:
-
我只是古玩(无意冒犯):您想验证 exe 校验和在 2 个构建之间没有变化的场景是什么?
-
我会发现每个“.obj”(或 Delphi 中的等价物)都有一个时间戳,该时间戳正在进入您的 .exe
-
与代码传输有关,对方需要测试二进制文件并随后验证代码是否与其对应。到目前为止,我还没有想出另一种方案来做到这一点。
标签: delphi compiler-construction linker checksum binary-reproducibility