我想知道在运行 .exe 文件之前、之后或之后生成校验和时是否会得到不同的结果。与边界情况相比,我更关心常见的做法(例如生成流行应用程序(如 firefox.exe)的 SHA 哈希),但两者都很有趣。谢谢。
最佳答案
只要文件是相同的(即仅包含相同的字节,以相同的顺序),文件的哈希值就应该是常量。很难找到在运行时重写其磁盘表示的应用程序,因此散列应该是常量。有自修改程序,但它们倾向于在内存中加载的代码副本上运行,而不是磁盘副本。
编辑:我们应该考虑“自更新”应用程序,但这些应用程序往往会启动一个小帮助程序来下载和更新核心应用程序。很难(尤其是在 Windows 上)在运行时更新执行。 UNIX 系统倾向于在写入系统上运行复制,因此软件更新可能会更改您脚下的可执行文件 - 但同样,这是一个“极端情况”。
关于.exe 文件的哈希值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1424248/