我有一句话我喜欢用于这些类型的情况:"你无法通过技术解决方案解决社会问题".如果某人有足够的动力去做你不喜欢的事情,你就无法阻止他们.你做得越努力,他们就越难以绕过你的障碍.最后,唯一的方法是减少他们的动机,这需要一个社会解决方案.
有效防止软件被破解是一项难以置信的猫捉老鼠游戏.随着每一个进步,你可以保护你的程序,有人会想出来,并解决它.毕竟,你的程序必须在计算机上运行,如果计算机能够理解它正在做什么,只要有足够的时间,一个充满动力的人就可以做到.
我不是说裂缝保护没用.如果你把它变得足够困难,它会花费很长时间来破解你的软件,一旦它们这么做,那个版本已经过时了,它就没用了.但是做到这一点非常困难,不幸的是,没有一个简单的创可贴解决方案可供外行人员使用.就像汤姆所说的那样,任何"坚持下去"的防裂方法都可以很容易地"剪掉".您的程序需要从一开始就设计为具有反破解方法.
无意侮辱你,如果你问这个问题,那么很明显你对软件保护知之甚少,无法设计或有效地使用它,你显然没有为军备竞赛做好准备需要保持您的软件真正有力的保护.
最有可能的是,无论你写什么,都不值得把它锁定到极端水平.采取简单的方法.你的目标应该是保持诚实的人诚实.只需编写一个简单的旧的简单验证例程来检查用户的密钥是否与用户的名称,地址和其他信息相结合,是否通过了一些校验和.对于您销售的每个副本,请获取用户的信息,生成密钥并将其提供给他们.更改每个版本的校验和,以便用户无法使用旧密钥.如果必须,可以通过互联网将其与某种类型的定期"电话主页"系统相结合,其中发布了泄露(并因此被取消)密钥的列表.
请记住,电话家庭系统往往会惹恼你诚实的客户,而烧坏一个好的客户并提供糟糕的复制保护(一个你再也不会得到的销售)远比让非客户得到一份你的计划(你不会得到的销售).
当然,一个饼干可以解决它,但饼干不是你的客户.你不能阻止他们或改变他们的动机.最后,他们将会做他们将要做的事情.
确定一个坏客户可以发出他们的密钥,或者根据许可条款使用它(比如在太多计算机上运行它).密钥可能会泄漏或被盗,坏人可以使用它,或者他们可以使用破解版本.你不能阻止这些事情发生,但你确实有法律制度(社会解决方案)来处理它.
重要的是,你要避免花费太多精力来锁定事情,并避免让你的合法客户过于严苛.毕竟,您为这些客户编写软件,而不是为了破解者.惹恼你的客户,让对于破解者来说更难的事情是不值得的.
是的,你看,就是这样。如果存在这样的东西,它将使用预定义的库函数,这很容易从破解中检测到......这正是苹果不提供 Mac 上的 App Store 保护示例代码的原因:为它使破解应用程序变得更容易而不是更困难。毕竟,如果你实现了这样的东西,你就不会再添加额外的保护,并且破解者可以对所有软件进行通用破解。
| 归档时间: |
|
| 查看次数: |
4690 次 |
| 最近记录: |