回答
是的,你看,就是这样。如果存在这样的事情,它将使用预定义的库函数,这些函数将很容易从破解中检测出来......这就是为什么苹果公司不会在Mac上为其App Store保护提供示例代码的原因:为开源库它使破解应用程序更容易,而不是更难。毕竟,如果你实现了这样的东西,你不会再添加额外的保护,而且破解者可以为所有软件制作一个通用破解。
我有一个词我喜欢用于这些类型的情况:“你无法用技术解决方案解决社会问题”。如果某人有足够的动机去做一些你不喜欢的事情,那么你无法阻止他们。你越难做出一些事情,他们就越努力克服障碍。最终,唯一的办法是减少他们的动机,而这需要一个社会解决方案。
有效防止软件被破解是一个难以置信的硬猫和老鼠游戏。随着每一次进步,你都可以保护你的程序,有人会想出来解决它。毕竟,你的程序必须在计算机上运行,如果计算机能够理解它在做什么,给予足够的时间,一个充满动力的人可以做到这一点。
我并不是说裂纹防护并不有用。如果你足够的努力,它会花费很长时间破解你的软件,以至于它们一旦这样做,那个版本就会过时并且毫无用处。但这样做是非常困难的,但不幸的是,没有简单的创可贴解决方案,只需要一个外行人就可以。像Tom said,任何“只要坚持”的防裂方法都可以很容易地被“剪掉”。您的程序需要从一开始就进行设计,以便采用防破解方法。
无意侮辱你,如果你问这个问题,那么它清楚地知道你不太了解软件保护来设计它或者有效地使用它,而你显然没有准备好您需要进行军备竞赛以保持软件真正强大的保护。
很可能无论你写什么都不值得把它锁定到一个极端的水平。采取简单的方法。你的目标应该是保持诚实的人诚实。只需编写一个简单的旧的简单验证例程,以检查用户的密钥是否与用户的姓名,地址和其他信息结合在一起传递一些校验和。对于您销售的每一份拷贝,请获取用户的信息,生成密钥并将其提供给他们。更改每个版本的校验和,以便用户不能使用旧密钥。如果必须的话,可以通过互联网将其与某种类型的定期“电话本地”系统相结合,在该系统中发布泄露(并因此取消)密钥的列表。
请记住,手机之家系统倾向于吹嘘诚实的客户,而且对于保留非客户而言,烧坏一个拥有不良客户身份的好客户(这是一次永远无法获得的销售)会更糟糕得到你的程序的副本(反正你不会得到这笔销售)。
确定一个饼干可以绕过它,但饼干不是你的顾客。你无法阻止他们或改变他们的动机。最后,他们要做他们要做的事情。
当然,不好的客户可能会放弃他们的密钥,或者违反许可条款(比如在太多的计算机上运行它)使用它。一把钥匙可能被撬开或被盗,一个坏人可能会使用它,或者他们可能使用破解版本。你不能阻止这些事情发生,但你确实有法律制度(社会解决方案)来处理它。
重要的是,您避免花费太多精力锁定事情,避免让合法客户过于严苛。毕竟,你为这些客户编写软件,而不是为饼干。让你的顾客呕吐,让饼干变得更难一点也不值得。
+1。我想知道是否至少存在一件值得开发的单一产品,但这不仅仅是因为人们无法在技术上做到这一点?从来没有听说过一个。 – 2011-12-02 15:28:05
- 1. 软件保护和许可证管理
- 2. 如何使用许可证管理器API管理Google保险柜许可
- 3. 使用RSA保护许可证文件
- 4. 如何管理软件序列号,许可证等?
- 5. 通过NuGet软件包管理器获得的软件包许可证
- 6. C#:查询FlexLM许可证管理器
- 7. Bluemix API管理,保护API实施
- 8. 软件许可证密钥
- 9. 软件评估 - 许可证
- 10. 许可证密钥管理
- 11. 许可证管理库
- 12. Python每席许可证保护
- 13. 如何保护软件许可证免受虚假数字签名?
- 14. 在Azure Api管理中保护WebApi
- 15. WSO2 API管理器的威胁保护
- 16. 在API管理器中向WSO2 API添加许可证字段
- 17. Raspberry软件保护
- 18. 哪里可以存储软件保护的保护试用信息目的
- 19. 许可证管理的时间
- 20. 许可证错误管理器-4
- 21. 在C++中保护许可实施
- 22. 许可证软件,使用非GPL许可证的GPL代码
- 23. 使用许可证文件来保护DLL文件
- 24. 托管的软件许可证使用情况的工具?
- 25. 保护软件的方法
- 26. 保护管理/第三方管理员
- 27. 是否可以使用GIT来管理客户端许可证?
- 28. Docusign API-用于自动用户供应的许可证管理
- 29. WSO2 API管理器 - 犀牛版本,存储库和许可证
- 30. 软件许可证Web应用程序
谢谢,我知道这一点...但我不是在寻找完美的东西。只需搜索类似http://www.activelocksoftware.com/的东西,但对于C++ – Spectral
“任何支持使用COM DLL的语言都可以访问Activelock库以进行保护”。所以你应该可以使用ActiveLock。 +1为提及activelock - 正是我需要的:) – flobadob