C ++ API:用于保护软件的许可证管理

时间:2011-11-28 10:28:43

标签: c++ api licensing

我正在寻找一个C ++和开源库来保护商业软件再次破解等......

你知道吗?

2 个答案:

答案 0 :(得分:6)

我有一句话我喜欢用于这些类型的情况:“你无法通过技术解决方案解决社会问题”。如果某人有足够的动力去做你不喜欢的事情,你就无法阻止他们。你做得越努力,他们就越难以绕过你的障碍。最后,唯一的方法是减少他们的动机,这需要一个社会解决方案。

有效防止软件破解是一项难以置信的猫捉老鼠游戏。随着每一个进步,你可以保护你的程序,有人会想出来,并解决它。毕竟,你的程序必须在计算机上运行,​​如果计算机能够理解它正在做什么,只要有足够的时间,一个充满动力的人就可以做到。

我不是说裂缝保护没用。如果你把它变得足够困难,它会花费很长时间来破解你的软件,一旦它们这么做,那个版本已经过时了,它就没用了。但是做到这一点非常困难,不幸的是,没有一个简单的创可贴解决方案可供外行人员使用。就像Tom said一样,任何“坚持下去”的防裂方法都可以很容易地“被剪掉”。您的程序需要从一开始就设计为具有反破解方法。

如果您不想侮辱您,如果您提出这个问题,那么很明显您对软件保护知之甚少,无法对其进行设计或有效使用,您显然没有为此做好准备你需要进行军备竞赛,以确保你的软件得到有力的保护。

最有可能的是,无论你写什么都不值得把它锁定到一个极端的水平。采取简单的方法。你的目标应该是保持诚实的人诚实。只需编写一个简单的旧的简单验证例程来检查用户的密钥是否与用户的名称,地址和其他信息相结合,是否通过了一些校验和。对于您销售的每个副本,请获取用户的信息,生成密钥并将其提供给他们。更改每个版本的校验和,以便用户无法使用旧密钥。如果必须的话,可以通过互联网将其与某种类型的定期“电话回家”系统结合起来,在那里发布泄露(并因此被取消)密钥的列表。

请记住,手机家庭系统往往会惹恼您诚实的客户,而烧坏一个好的客户会带来糟糕的复制保护(一个您永远不会再获得的销售),而不是让非客户无法获得你的程序副本(你不会得到的销售)。

当然,一个饼干可以解决它,但饼干不是你的客户。你不能阻止他们或改变他们的动机。最后,他们将会做他们将要做的事情。

确定一个坏客户可能会发出他们的密钥,或者根据许可条款使用它(比如在太多计算机上运行它)。密钥可能会泄漏或被盗,坏人可以使用它,或者他们可以使用破解版本。你不能阻止这些事情发生,但你确实有法律制度(社会解决方案)来处理它。

重要的是,您要避免花费太多精力来锁定事情,并避免让合法客户过于严苛。毕竟,您为这些客户编写软件,而不是为了破解者。惹恼你的客户,让对于破解者来说更难的事情是不值得的。

答案 1 :(得分:4)

是的,你知道,那是事情。如果存在这样的事情,它将使用预定义的库函数,这些函数很容易从破解中检测出......这正是Apple为Mac上的App Store保护提供示例代码的原因:制作一个开源库它使得破解应用程序变得更容易而不是更难。毕竟,如果你实现了这样的东西,你将不再添加额外的保护,并且破解者可以为所有软件制作一个通用的破解。