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

Windows 替换嵌入图标图像中的PE,无需重新签名文件,windows,digital-signature,code-signing,portable-executable,Windows,Digital Signature,Code Signing,Portable Executable,是否有任何选项可以为windows中已签名的PE可执行文件设置新图标,而无需重新签名 这意味着图标图像虽然完全嵌入到PE文件中,但不会在文件签名部分中显示时更改哈希值 也许有一个概念,人们可以只对文件的代码和数据部分进行签名,而避开其他部分?或者也许有一个选项可以从签名封面中排除不需要的部分 也许可以将图标以某种方式放置在由SignTool创建的证书部分内,以便将其从签名中排除 谢谢否,microsoft提供的用于对二进制文件进行签名的签名工具无法对文件进行部分签名。如果任何人都可以更改嵌入的资

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

这意味着图标图像虽然完全嵌入到PE文件中,但不会在文件签名部分中显示时更改哈希值

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

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


谢谢

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


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

@RbMm,也许你知道如何做到这一点?这是一个选项,但我希望找到一种方法,即使图标嵌入到文件中,在计算文件哈希时以某种方式跳过这一部分(就像跳过证书散列一样)我认为,在不重新指定文件的情况下,您可以存储额外数据的唯一位置是证书本身。您可能可以处理一些额外的数据字段,但无法让windows资源管理器将证书的一部分解释为文件图标。简单地说,没有位置(在exe中)要存储不属于SHA校验和输入的图标,windows资源管理器将搜索图标。@markus nm,您好。您可以详细说明如何使用清单从PE外部化资源吗?