You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修改System.Comment会破坏数字签名?Windows文件元数据修改与签名验证疑问

修改System.Comment会破坏数字签名?Windows文件元数据修改与签名验证疑问

首先可以明确地告诉你:这确实是Windows数字签名机制的设计行为,你的观察完全正确,修改这类元数据确实会破坏signtool.exe生成的数字签名。

之所以会出现这种情况,核心原因在于Windows数字签名的验证逻辑,以及这类元数据的存储方式:

  • 当你用signtool.exe给文件(比如MSI、PE格式的EXE/DLL)签名时,签名本质是对文件的核心内容(包括部分元数据字段)计算哈希值,然后用你的私钥对这个哈希进行加密。验证签名时,系统会重新计算文件当前的哈希值,和签名中附带的原始哈希对比——只要两者不一致,就会判定签名无效。
  • 你修改的System.Comment这类属性,对于MSI和PE文件来说,并不是存储在文件外部的“附加区域”(比如NTFS交替数据流),而是直接嵌入在文件自身的结构内部:比如MSI文件的摘要信息流、PE文件的资源节。修改这些属性会直接改变文件的字节内容,自然会导致哈希值变化,触发签名验证失败。

你提到的困惑其实很常见——很多人会觉得“评论、标签这类元数据属于文件的‘附加信息’,不应该影响核心签名”,但这取决于文件类型和元数据的存储方式:

  • 对于普通的非签名文件(比如TXT、JPG),部分元数据可能存储在不影响主文件哈希的区域,修改后不会有问题;
  • 但对于经过代码签名的MSI/PE文件,这类元数据属于签名覆盖的“不可修改范围”,任何改动都会被视为文件内容被篡改。

如果你的需求是修改已签名文件的这类元数据,正确的流程应该是:

  1. 先用signtool.exe remove移除原文件的签名;
  2. 修改所需的元数据(比如System.Comment);
  3. 最后用signtool.exe sign重新对文件进行签名。

备注:内容来源于stack exchange,提问作者paulgutten

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 10:23:10