我有一个可执行文件,该文件要保护以防止更改文件版本信息。
最初,我认为使用证书对exe进行签名可以解决此问题,但是当您使用免费的实用程序修改文件版本信息时,数字签名似乎仍然保持不变。
我认为唯一的方法是执行某种checksum on the exe,但是这并不理想,因为我担心这会导致各种后处理程序(混淆,反调试等)出现问题。 ),我正在执行该操作,拒绝在运行时访问.exe。
还有其他方法可以检测文件版本信息是否已被修改吗?
答案 0 :(得分:1)
如果仅更改可执行文件的1个字节,则证书无效。 似乎您使用的是Windows资源管理器的“属性”窗口,更改版本号后,仍然可以看到“数字签名”选项卡。这在Windows中对可执行文件的数字签名很有误导性,但事实并非如此。 此选项卡仅表示文件包含证书,但与该证书的验证无关。在此选项卡中,单击证书,然后单击详细信息,现在在打开的窗口顶部,您可以看到该证书有效或无效。
通过使用Windows API,您可以检查证书是否有效,也许this topic帮助您使用C#。