2

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

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

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

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

4

2 回答 2

2

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

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

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

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

于 2011-03-23T18:22:37.483 回答
0

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

如果您可以使用第三方系统,请查看CryptoLicensing,它通过其“Notify License Service On Validation”许可证设置支持这种确切的场景。

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

于 2011-04-15T09:59:53.223 回答