自解压自检可执行文件

Posted

技术标签:

【中文标题】自解压自检可执行文件【英文标题】:Self-extracting self-checking executable 【发布时间】:2012-05-10 20:40:06 【问题描述】:

我正在分发一个经过验证码签名的自解压可执行文件,其内容由我控制。

它包含大量基于 MSI 的安装程序,用于控制分布式系统的热插拔,因此它本身不能轻易成为 MSI。

如果可执行文件只是检查自己的验证码并且如果未签名则拒绝自解压,那就太好了。我确实意识到这并不能提供真正的完整性保证,但它会强化信息,即内容绝不可定制,并且可能使一些正式的认证更容易处理。

一种可能的策略可能基于this still unanswered question。还有其他想法吗?

【问题讨论】:

如何创建自解压exe?如果您可以修改其代码,那么您可以在提取之前使用 WinVerifyTrust 检查证书完整性 @Isso - 现在是 pkzip25 -sfx。然后单独签署。我知道修改发出的代码的唯一方法是废弃 pkzip 并编写我自己的压缩工具。 所以你基本上需要一个像pkzip这样的打包器,它内置了一个签名检查器?抱歉,我不知道有任何此类解决方案。 【参考方案1】:

这在一般情况下是不可能的。如果有人篡改了你的二进制文件,也许他们也会删除你的自检。

如果可以构建一个完全防篡改的可执行文件,那么任何人都无法盗版软件。

通过创建自解压可执行文件,然后对其应用商业复制保护包,可以最接近地实现您的要求。

为此,请使用您喜欢的搜索引擎搜索“可执行复制保护”。

【讨论】:

确实如此。如果有一个打包者愿意在提取之前调用WinVerifyTrust,我想我有一个用例。 (我猜你可能不介意阅读描述用例的问题的最后两句话。)如果没有,我想我会明白为什么。 您的要求可以通过创建自解压可执行文件然后对其应用商业版权保护包来最接近地实现。 接受,因为谈话最终帮助我认识到这样一个简单的事实,即这样的功能不存在并且我不需要它。

以上是关于自解压自检可执行文件的主要内容,如果未能解决你的问题,请参考以下文章

PE格式自检

在可执行文件中包含引用

MSI 安装程序的可执行文件

可执行文件到MSI安装程序

Linux下制作bin可执行文件

如何让打的可执行jar包可以包含外部库的解压文件