替换嵌入图标图像中的 PE,无需重新签署文件

Replace PE in embedded icon image, without re-signing the file all over again

是否有任何选项可以在 windows 中为已签名的 PE 可执行文件设置新图标而无需重新签名?

这意味着图标图像虽然完全嵌入到 PE 文件中,但不会更改哈希值,因为它出现在文件签名部分。

也许有这样一种概念,可以只对文件的代码和数据部分进行签名,而避免对其他部分进行签名?或者也许可以选择从签名封面中排除不需要的部分?

也许可以将图标以某种方式放置在由 SignTool 创建的证书部分本身中,以便将其排除在签名之外?

谢谢

不,微软提供的用于对二进制文件进行签名的signTool 不能对文件进行部分签名。如果任何人都可以更改嵌入式资源,那么签署二进制文件就没有多大意义——应用程序代码可能依赖于这些资源中的数据。因此,如果签名未涵盖资源的完整性,则可执行代码也将不受信任,从而破坏签名的目的。

一种解决方案是将资源外部化,因此它不是签名的一部分。通过在应用程序的清单文件中指定图标的外部路径可能是可能的 - 但我不确定。