谁来解释一下,为什么相同的代码,每次编译所得的exe,它们的MD5校验值,都不一样?

startququ 2012-04-25 09:18:43
代码没有经过任何改动,然后编译N次,得N个exe,但是这N个exe,他们的MD5值,都不一样,为什么?


...全文
773 27 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
startququ 2012-04-25
  • 打赏
  • 举报
回复
我知道MD5是什么。我以前写过计算MD5值的代码。



[Quote=引用 9 楼 的回复:]

你知道md5加密之前的源字符串是什么么? 应该是一些可变的源数据
[/Quote]
orochiheart 2012-04-25
  • 打赏
  • 举报
回复
你知道md5加密之前的源字符串是什么么? 应该是一些可变的源数据
showjancn 2012-04-25
  • 打赏
  • 举报
回复
应该没有编译信息,可能跟编译器有关,因为编译时,比如变量、函数名、类名等,编译器都将动态生成,可能会不一样。
没有查证。
startququ 2012-04-25
  • 打赏
  • 举报
回复
我用g++编译器,编译c++代码:

如果代码不经任何改动,每次编译出来的exe,MD5都是一样的。



[Quote=引用 5 楼 的回复:]

當然不一樣,這是唯一
[/Quote]
startququ 2012-04-25
  • 打赏
  • 举报
回复
“唯一”= “不一样” ?

我的源代码,都没有经过任何改动。

编译的时候,被添加了哪些不一样的东西?




[Quote=引用 5 楼 的回复:]

當然不一樣,這是唯一
[/Quote]
crackdung 2012-04-25
  • 打赏
  • 举报
回复
當然不一樣,這是唯一
startququ 2012-04-25
  • 打赏
  • 举报
回复
没有人知道吗?
startququ 2012-04-25
  • 打赏
  • 举报
回复
能否去掉这些编译信息?


[Quote=引用 2 楼 的回复:]

里面含用编译时间日期..等一些信息数据
[/Quote]
lilei_new 2012-04-25
  • 打赏
  • 举报
回复
里面含用编译时间日期..等一些信息数据
lilei_new 2012-04-25
  • 打赏
  • 举报
回复
估计里面含有编译信息,比如编译时间日期..
mrsupersky 2012-04-25
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 的回复:]
我问的,正是:编译结果中,哪些是变动的信息。



引用 24 楼 的回复:

.NET是中間語言》需要JIT的,慢慢去理解,,,


引用 23 楼 的回复:

你懂什麽叫做尋址嗎?自己去理解
[/Quote]

这个问题你的搞搞 怎么个反编译了
我是说你要是能够做出.net Reflector类似的软件 的话,那你就知道是怎么回事了。。。

startququ 2012-04-25
  • 打赏
  • 举报
回复

我问的,正是:编译结果中,哪些是变动的信息。



[Quote=引用 24 楼 的回复:]

.NET是中間語言》需要JIT的,慢慢去理解,,,
[/Quote]

[Quote=引用 23 楼 的回复:]

你懂什麽叫做尋址嗎?自己去理解
[/Quote]
startququ 2012-04-25
  • 打赏
  • 举报
回复
我题目不是已经说了吗:代码不经过任何的改动,编译N次,就有N个MD5值。

注意:前提是“不经过任何改动”的N次编译。



[Quote=引用 21 楼 的回复:]

不和你說,總之修改就一定會變,這個道理都不懂,,哎,注意:我說的是修改,包括你在源代碼哪怕增加一行空白行,,,,都會變
[/Quote]
crackdung 2012-04-25
  • 打赏
  • 举报
回复
.NET是中間語言》需要JIT的,慢慢去理解,,,
crackdung 2012-04-25
  • 打赏
  • 举报
回复
你懂什麽叫做尋址嗎?自己去理解
startququ 2012-04-25
  • 打赏
  • 举报
回复
我说的是不修改的情况下,一个符号都不增加、不减少、不修改。

[Quote=引用 21 楼 的回复:]

不和你說,總之修改就一定會變,這個道理都不懂,,哎,注意:我說的是修改,包括你在源代碼哪怕增加一行空白行,,,,都會變
[/Quote]
crackdung 2012-04-25
  • 打赏
  • 举报
回复
不和你說,總之修改就一定會變,這個道理都不懂,,哎,注意:我說的是修改,包括你在源代碼哪怕增加一行空白行,,,,都會變
startququ 2012-04-25
  • 打赏
  • 举报
回复
release的,也是每次都不一样。

[Quote=引用 17 楼 的回复:]

release试试看

对于文件,有个关键的问题:exe文件里好像是有时间信息的。比如创建时间,最后修改时间等。原始信息里应该是有创建时间信息的。

还有可能,debug的不一样,release的一样。
[/Quote]
startququ 2012-04-25
  • 打赏
  • 举报
回复
G++编译器,就是编译多少次,MD5、SHA1这些校验信息都一样。

不知道.Net的编译器,在exe里放了什么东西??

[Quote=引用 18 楼 的回复:]

MD5 ,SHA1肯定前後編譯的不一樣,如果你能做到,,,很多事情都可以了
[/Quote]
crackdung 2012-04-25
  • 打赏
  • 举报
回复
MD5 ,SHA1肯定前後編譯的不一樣,如果你能做到,,,很多事情都可以了
加载更多回复(6)

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧