保护软件免受盗版

Posted

技术标签:

【中文标题】保护软件免受盗版【英文标题】:Protecting Software from Pirates 【发布时间】:2011-07-14 17:26:39 【问题描述】:

在阅读了 Stack Overflow 上关于如何保护软件的大量帖子后,我意识到你不能。值得庆幸的是,我的软件是针对托管企业(不是很多)和少数消费者。我认为该软件不会流行到任何人都会破解它,但我想保护它。

在我发现的一个线程中,它有一个半体面的选项列表。我决定使用“使用可撤销密钥的简单注册,经常在线验证”。

我想既然我的应用程序是一个 C# NET 控制台应用程序,它将通过一个管理容器运行,我可以为它发出密钥。也许做一个 mysql 数据库并保留一个只能在一次安装中使用的密钥列表,以及另一个可以在 X 安装中使用的密钥列表。无论如何,我的应用程序将在启动时使用命令行参数运行,因此添加“-key 29839X900AQ”之类的参数将减轻他们对它的过度担心的需要。

有没有人知道任何信息/网站可以帮助设置这样的东西?

【问题讨论】:

【参考方案1】:

您绝对可以保护软件和声称否则是错误的线程。没有人破解过我们的系统(在正确实施的情况下),并且我们进行了公开竞赛,看看是否有人能破解(免责声明:我在一家软件保护公司工作)。

但是,有无数种方法可以解决这个问题,并且没有无法破解的“免费”系统或纯软件系统。但是,有些功能足够强大,需要付出巨大的努力,除非您的软件吸引了一个大市场或花费大量美元,否则破解者将没有多少动力去努力。

如果我理解您提出的解决方案,您将很容易受到共享密钥的人的攻击。您可以检查单个密钥是否始终来自同一个 IP 地址,但可能会被欺骗(以允许非法复制)或可能阻止合法客户访问。

保护就像把锁放在门上:可以想象,更多的锁可以阻止窃贼,但它也会让你进出更加困难。如果锁太多,它可能只会让窃贼寻找窗户来踢。由于我们以此为生,因此我们研究了人们如何破解软件,而且很多时候保护方案很容易绕过,只是不像最初的开发者预期的那样。每个人都想完成的技巧是在不产生误报(错误地阻止合法用户)的情况下拥有适当的保护强度。如果您需要更多帮助,请随时 PM 我。

【讨论】:

【参考方案2】:

执行此操作的一种方法是使用 Web 服务,您可以在其中保留所有已撤销/禁用许可证的列表(可能在数据库中)。从您的应用程序中,您将不时 ping 服务以查看当前使用的许可证是否已被吊销。如果是这样,则许可证验证失败。

如果您可以使用第三方系统,请查看 CryptoLicensing,它通过其“验证时通知许可服务”许可设置支持这种确切的场景。

免责声明:我在 CryptoLicensing 的开发商 LogicNP Software 工作。

【讨论】:

以上是关于保护软件免受盗版的主要内容,如果未能解决你的问题,请参考以下文章

作业4,版权保护

sql参数保护你免受啥影响?

如何保护我的 IP 免受欺骗或保护?

签名以保护 JAR 免受逆向工程

如何保护网站免受攻击

保护 Android 应用免受逆向工程