CSkin博客

标题: 同一份源码,连续编译两次,对比二进制文件,内容不一致 [打印本页]

作者: 我是菜鸟    时间: 2017-7-22 23:47
标题: 同一份源码,连续编译两次,对比二进制文件,内容不一致
本帖最后由 我是菜鸟 于 2017-7-22 23:50 编辑

一、准备工作打开vs,以 vs2010为例。新建一个控制台程序,使用默认设置(工程名称 ConsoleApplication1)。编译 release,生产 exe 文件,文件名称为ConsoleApplication1.exe,备份改文件,重新编译该工程,重新生词ConsoleApplication1.exe。

二、使用Beyond Compare 比较两个 exe 文件。查看比较结果,发现有两处不一致的地方。
1、第一处

按照 pe 文件结构来看,该处的不同为TimeDateStamp,时间戳,两次编译的时间不一样,所以该字段也不一样
1、第二处

该处为什么不一样?按照相同代码,在相同的环境进行编译,除了时间不一样以外,其他的应该都一样?
最近在公司利用 C#写了一个程序,现在发布版本,到时候需要回溯软件。要求同一份代码,编译出来的 exe 需要保持一致,如果不一致,则认为软件有改动。该问题已经困扰两天。求教各位大神,非常感谢 orz!!!


作者: sisuo366    时间: 2017-7-24 21:05
不会是文件的名称吧。。。另一个多了副本两个字
作者: 轩墨玉生烟    时间: 2017-8-5 00:01
不需要这么麻烦,直接校验MD5就可以看出来了
作者: 轩墨玉生烟    时间: 2017-8-5 00:02
如果两次校验的MD5相同,那么说明没有任何改动,否则就存在改动,另外,将文件复制到其他路径(且不修改文件名的情况下)也不会影响MD5校验的结果。




欢迎光临 CSkin博客 (http://bbs.cskin.net/) Powered by Discuz! X3.2