MD5 of exe/dlls are different after rebuild
我想知道是否可以在新构建后使 dll/exe 的 MD5 保持一致?
每次我重建我的项目并使用"Microsoft File Checksum Integrity Verifier"工具获得不同的 MD5 时。
我找到了一些关于这个问题的文章,有人说这是由于 PE32 文件头上的时间戳。我对此一无所知。请问有人可以帮忙吗?提前谢谢你!
以下是我获得 MD5 总和的方法。 MD5Compare.exe 完全相同,只是它们不是在同一版本中创建的。
1 2 3 4 5 6 7 8 9 10 11 12 13 | C:\\Users\\Administrator>fciv.exe D:\\Lab\\MD5Compare\\MD5Compare\\bin\\Debug\\2 -wp MD5 Compare.exe // // File Checksum Integrity Verifier version 2.05. // 5cdca6373aca0e588e1e3df92a1d5d0a MD5Compare.exe C:\\Users\\Administrator>fciv.exe D:\\Lab\\MD5Compare\\MD5Compare\\bin\\Debug\\2 -wp MD5 Compare.exe // // File Checksum Integrity Verifier version 2.05. // cf5caace5481edc79fd7bf3e99b48a5b MD5Compare.exe |
不,校验和必须不同,因为文件中的数据实际上已经改变,即使没有代码 - 编译没有功能差异,没有新功能添加到程序集中 - 因为构建的时间戳,一方面,会有所不同。
因此,您需要在此处考虑元数据,以及它如何存储/影响文件系统上文件的属性,因此需要进行完整性检查。
请考虑 MD5 应该做什么:它应该确保没有人在二进制级别上更改过您的文件。它应该确保您的文件完全相同。拥有多个构建(不同的文件)具有相同的 MD5 校验和会破坏拥有 MD5 的目的。
如果您可以在校验和保持不变的情况下更改文件,那么黑客也可以。