社区
C语言
帖子详情
为什么每次编译之后计算MD5都不相同?
一桶姜山
2013-07-24 11:57:24
代码完全不变,重新编译,每次出来的的文件MD5都不一样。
我用UE的2进制比较工具比较了一下,除了PE头中的时间戳和校验和2处不同之外,在很后面的地方还会有2处不同,我本来想做个工具判断2个exe是否是同一个代码编译出来的,可是遇到这样的问题后发现没法简单判断了。
求高手,这后面哪块莫名奇妙的不同之处是怎么造成的?
...全文
1978
7
打赏
收藏
为什么每次编译之后计算MD5都不相同?
代码完全不变,重新编译,每次出来的的文件MD5都不一样。 我用UE的2进制比较工具比较了一下,除了PE头中的时间戳和校验和2处不同之外,在很后面的地方还会有2处不同,我本来想做个工具判断2个exe是否是同一个代码编译出来的,可是遇到这样的问题后发现没法简单判断了。 求高手,这后面哪块莫名奇妙的不同之处是怎么造成的?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
businiaowyf
2013-12-26
打赏
举报
回复
2
正解是你代码里使用了__TIME__, __DATE__之类的宏
www_adintr_com
2013-07-24
打赏
举报
回复
在中间位置不一定就是代码或数据, 你的根据 PE文件的节表来找代码段和数据段才行. 你是 Debug 版还是 Release 版? Debug 版的话里面还存了 pdb 文件的版本之类的信息.
一桶姜山
2013-07-24
打赏
举报
回复
编译选项什么都没变,只是重新编译了一下。 而且只是时间戳和校验和不同到还简单,我可以在算md5之前把这2个部分置0,但是后面出现的不同之处就有点摸不着头脑了,我看了下位置是大概是出现在文件的中间部位。有时候编译出来10来个字节不同,有时候是1个字节不同,感觉这个地方不是代码段就是数据段了啊
www_adintr_com
2013-07-24
打赏
举报
回复
换个编译选项, 换个编译器更加不同了, 如何去判断是否同一份代码生成的... 你试试只比较代码段, 和数据段, 其它地方的差别就别管了.
蠓虫带着秤砣飞
2013-07-24
打赏
举报
回复
引用 5 楼 paulcxz 的回复:
我编译的是RELEASE版的 本来想做个简单的判断,看来这下要彻底研究PE文件格式才行了啊
确实了,里面还是有很多别的信息的。
一桶姜山
2013-07-24
打赏
举报
回复
我编译的是RELEASE版的 本来想做个简单的判断,看来这下要彻底研究PE文件格式才行了啊
davidyu720
2013-07-24
打赏
举报
回复
编译链接得到的EXE和DLL文件,除了数据段和代码段以外,在特定地方还保存了编译程序、链接程序运行产生的一些信息。这些信息不是固定不变的。
vc实现
MD5
值文件校验
拖放目标文件到对话框内,即可得到文件的
md5
值,单击生成校验按钮,就可为此文件生成一个.cyy后最的文件校验文件,下次拖拖放就该文件就可知道文件是否被修改过.(防止存储的文件被绑马而自己不知道)
MD5
.rar_
md5
MD5
校验
计算
模块,直接可以用于项目的工业级代码,经过了项目的严格测试,测试覆盖率100
MD5
.rar_
md5
_
md5
bcb
c++ bcb 可查询文件
MD5
值 源代码,可
编译
成功
用2次
MD5
技术实现登陆注册
以2次
MD5
技术实现登陆注册,可以保证用户信息安全,防止黑客窃取信息。
MD5
-class.zip_
md5
_
md5
c语言
md5
的C语言实现,可在windows/XP/2000等操作系统下调试
C语言
70,005
社区成员
243,256
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章