【问题标题】:How to protect an executable from version info changes?如何保护可执行文件免受版本信息更改?
【发布时间】:2018-08-25 04:57:00
【问题描述】:

我有一个可执行文件,我想防止文件版本信息发生更改。

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

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

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

【问题讨论】:

    标签: c# .net


    【解决方案1】:

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

    通过使用 Windows API,您可以检查证书是否有效,也许 this topic 在 C# 中可以帮助您。

    【讨论】:

    • 谢谢!我确实在寻找 Windows 上的“数字签名”选项卡,而不是在更改后表明签名“无效”的详细信息。我正在使用您提到的链接中的代码,但看起来我遇到了与原始海报相同的问题-Verify() 似乎没有接受这种更改,因此我的代码也没有检测到无效签名.看起来没有一个纯粹的 .net 解决方案。
    猜你喜欢
    • 2022-07-01
    • 2017-11-27
    • 2011-07-14
    • 1970-01-01
    • 1970-01-01
    • 2012-11-19
    • 1970-01-01
    • 2022-12-20
    • 1970-01-01
    相关资源
    最近更新 更多