如何保护可执行文件免受版本信息更改的影响?



我有一个可执行文件,我想保护它免受文件版本信息的更改。

我最初认为使用证书对 exe 进行签名可以解决此问题,但是当您使用免费提供的实用程序修改文件版本信息时,数字签名似乎仍然保持不变。

我认为唯一的方法是对 exe 执行某种校验和,但这并不理想,因为我担心这会导致我正在执行的各种后处理器(混淆、反调试等(出现问题,这些处理器拒绝在运行时访问.exe。

还有其他方法可以检测文件版本信息是否已以某种方式修改吗?

如果仅更改了可执行文件的 1 个字节,则证书不会更有效。 似乎您使用了Windows资源管理器的"属性"窗口,并且在更改版本号后,"数字签名"选项卡仍然存在。这对Windows中可执行文件的数字签名非常具有误导性,但事实并非如此。 此选项卡仅显示文件包含证书,但与此证书的验证无关。在此选项卡中,单击证书,然后单击详细信息,现在在打开的窗口顶部,您可以看到证书是否有效。

通过使用 Windows API,您可以检查证书是否有效,也许本主题在 C# 中为您提供帮助。

最新更新