2

我想知道在运行该文件之前和之后或之后在 .exe 文件上生成校验和时是否会得到不同的结果。与边界情况相比,我更关注常见做法(例如生成流行应用程序(如 firefox.exe)的 SHA 哈希),但两者都很有趣。谢谢。

4

4 回答 4

8

只要文件相同(即仅包含相同的字节,以相同的顺序),文件的哈希值就应该是恒定的。很难找到在运行时重写其磁盘表示的应用程序,因此哈希应该是恒定的。有自修改程序,但它们倾向于在内存中加载的代码副本上进行操作,而不是在磁盘副本上进行操作。

编辑:我们应该考虑“自我更新”应用程序,但这些往往会启动一个小帮助程序来下载和更新核心应用程序。在运行时更新执行是很困难的(尤其是在 Windows 上)。UNIX 系统倾向于操作 Copy on Write 系统,因此软件更新可能会更改您脚下的可执行文件 - 但同样,这是一个“极端情况”。

于 2009-09-14T22:39:49.417 回答
2

仅当 exe 更改时,哈希才会更改。只有当应用程序修改自身时才会发生这种情况,如果没有重新启动应用程序,这不会在 Windows 上发生。Firefox 可能会自行更新(包括重新启动),但除了这种情况外,哈希值将保持不变。

于 2009-09-14T22:40:12.537 回答
2

如果文件更改,哈希将更改。

EXE 文件很少自行更改。firefox.exe如果用户更新到新版本,将会改变。

您可以在运行 EXE 文件(如firefox.exe)后检查它的“修改日期”属性以查看它是否已更改,但您可能会发现它没有。

于 2009-09-14T22:41:03.127 回答
1

如果您指的是上次访问时间的修改,请不要担心,它存储在文件系统级别,而不是文件中,因此哈希值将保持不变。

于 2009-09-14T22:43:15.510 回答