exe - 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%)
解决方案
Windows 二进制文件不是确定性的;元数据包含有关程序何时构建的时间信息。您可以使用一些十六进制编辑和一些关于 Windows 如何喜欢其程序标题的知识来手动更改元数据,但是如果您想要确定性编译,您将不得不竭尽全力实现这一目标......或者更具体地说如果您想将 SHA-256 与他们的版本进行比较,那么原始开发人员将是这样做的。
推荐阅读
- uinavigationbar - 推送ios13时导航栏高度降低
- discord.js - Discord js TypeError:无法读取属性成员
- latex - 如何从乳胶中的子图的标题中消除括号?
- asp.net-core - 将 ASP.NET CORE 应用程序部署到 IIS
- angular - 是否可以直接从 Angular 应用程序在谷歌云中执行 CURD 操作?
- java - eclipse中的Spring Boot项目设置错误
- javascript - 是要求一个类并立即初始化它的简写吗?
- objective-c - 可选函数中的多种返回类型
- algorithm - 为 crc 生成多项式密钥
- node.js - 使用节点 js 在 mongodb 中加入集合