c++ API: license管理,保护软件

C++ API : license management to protect a software

本文关键字:保护 软件 管理 license API c++      更新时间:2023-10-16

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

你知道吗?

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

有效防止软件被破解是一项极其困难的猫捉老鼠游戏。随着您在保护程序方面的每一个进步,总有人会发现并绕过它。毕竟,你的程序必须在计算机上运行,如果计算机能理解它在做什么,只要有足够的时间,一个足够有动力的人就能做到。

我不是说防破解没有用处。如果你把它设置得足够困难,黑客就会花很长时间来破坏你的软件,一旦他们这么做了,那个版本就过时了,毫无用处。但要做到这一点是非常困难的,不幸的是,没有一个外行可以随手贴上的简单的创可贴。就像汤姆说的,任何"只要把它插进去"的防裂方法都很容易被"剪掉"。您的程序需要从一开始就设计成具有防破解方法。

我无意冒犯你,如果你问这个问题,那么很明显你对软件保护的了解不够,无法有效地设计或使用它,而且你显然没有准备好参加军备竞赛,以确保你的软件得到真正有力的保护。

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

请记住,家庭电话系统往往会惹恼你诚实的客户,用糟糕的复制保护来烧掉一个好客户(一个你永远不会再得到的销售)比让一个非客户得到你的程序的副本(一个你无论如何都不会得到的销售)要糟糕得多。

当然,饼干可以绕过它,但饼干不是你的客户。你不能阻止他们或改变他们的动机。最终,他们会做他们想做的事。

当然,一个坏客户可能会泄露他们的密钥,或者违反你的许可条款(比如在太多的计算机上运行它)。钥匙可能会脱落或被盗,坏人可能会使用它,或者他们可能会使用破解的版本。你不能阻止这些事情的发生,但当它发生时,你确实有法律体系(一种社会解决方案)来处理它。

重要的是,你要避免花太多的精力来锁定事情,你要避免让事情对你的合法客户过于苛刻。毕竟,您是为这些客户编写软件,而不是为黑客编写软件。惹恼你的客户,让事情变得更加困难,这是不值得的。

你看,这就是问题所在。如果存在这样的东西,它将使用预定义的库函数,这将很容易从裂缝中检测到…这就是为什么苹果没有为Mac上的App Store保护提供示例代码:制作一个开源库可以让破解应用变得更容易,而不是更难。毕竟,如果你实现了这样的东西,你就不会再增加额外的保护了,黑客就可以对所有的软件进行通用的破解。