首页 > 解决方案 > NSIS exe 内部字节和 SHA26 差异

问题描述

当我在不更改代码的情况下运行 makeInstaller 时,字节大小或多或少会变化 4-5,这会影响生成的 exe 上的 SHA26,从而导致完整性问题。这里有什么想法吗?

Processed 1 file, writing output (x86-ansi):

Output: "C:\Users\build\setup.exe"
Install: 4 pages (256 bytes), 2 sections (1 required) (4144 bytes), 681 instructions (19068 bytes), 322 strings (5999 bytes), 1 language table (302 bytes).
Uninstall: 3 pages (256 bytes), 1 section (2072 bytes), 312 instructions (8736 bytes), 152 strings (2665 bytes), 1 language table (286 bytes).
Datablock optimizer saved 861 bytes (~0.0%).

Using zlib compression.

EXE header size:               47104 / 37888 bytes
Install code:                   5696 / 28161 bytes
Install data:               37940628 / 96426788 bytes
Uninstall code+data:           49617 / 56047 bytes
CRC (0xD494AC91):                  4 / 4 bytes

Total size:                 38043049 / 96548888 bytes (39.4%)

标签: exensissha

解决方案


Windows 二进制文件不是确定性的;元数据包含有关程序何时构建的时间信息。您可以使用一些十六进制编辑和一些关于 Windows 如何喜欢其程序标题的知识来手动更改元数据,但是如果您想要确定性编译,您将不得不竭尽全力实现这一目标......或者更具体地说如果您想将 SHA-256 与他们的版本进行比较,那么原始开发人员将是这样做的。


推荐阅读