我有一个用于我的知识产权的小型软件程序。我在 VC++ 中将它作为 Visual Studio 2010 DLL 项目编写。
我想保护 DLL 的代码。保护 DLL 中的逻辑免受逆向工程。
在 DLL 中放置一个到期期限,就像将在 1 个月内到期的试用期一样。
我在这里最好的选择是什么?试用期结束后我应该使用什么无法破解或逆向工程?我以前从来没有这样做过,所以基本上我在这里一无所知。
任何帮助表示赞赏!
谢谢
我有一个用于我的知识产权的小型软件程序。我在 VC++ 中将它作为 Visual Studio 2010 DLL 项目编写。
我想保护 DLL 的代码。保护 DLL 中的逻辑免受逆向工程。
在 DLL 中放置一个到期期限,就像将在 1 个月内到期的试用期一样。
我在这里最好的选择是什么?试用期结束后我应该使用什么无法破解或逆向工程?我以前从来没有这样做过,所以基本上我在这里一无所知。
任何帮助表示赞赏!
谢谢
安全性是一个标量——安全性越高越好,但要付出代价。在这种情况下,您有两种选择:
推出您自己的解决方案(混淆、加密等)。成本是您设计、测试、修复和支持它的劳动力。其他成本是您的客户是否会因为您给他们制造问题而感到恼火(因为您的实施存在缺陷,因为您缺乏经验、缺乏精力投入、缺乏用例测试等等)。
购买商业“挂锁”。我们公司生产,其他公司也生产。成本是门外的现金(不必太多,根据您选择的解决方案可能非常实惠)。商业产品应该使保护 dll 和创建试用版变得异常快速和简单。
好处是您不必将精力花在您不太了解的事情上(向专家寻求专门的解决方案),并且如果有需要解决的问题,您会感到窒息。您也可以购买比您自己制作的更好的安全性。
如果您的 dll 很有价值,请花费一些资源来妥善保护它。如果你有昂贵的珠宝,你会把它放在雪茄盒还是保险箱里?如果不是很值钱,就别管保险箱了,床底下的雪茄盒就够了。
试用期结束后我应该使用什么无法破解或逆向工程?
没有什么是不能破解的。请在这里阅读我的回答。作为一名逆向工程师,我完全同意 Adam Rosenfield 对您的问题的评论。这是一场军备竞赛,不多不少。让您的软件酷炫有趣,实际上有人可能会花时间破解最耗时的保护方案。
我以前从来没有这样做过,所以基本上我在这里一无所知。
这使事情变得更糟,因为这意味着您甚至无法很好地判断哪个解决方案可能有机会,而哪个没有机会。问题是,你只能阻止“饼干”这么多。但是更有趣的问题是,如果您的保护没有被破解,它是否是好的,或者您的软件是否可能如此无趣以至于没有人努力破解它。再次,阅读我关于相关主题的链接答案。
要点:我质疑这种保护机制的动机。防止知识产权“盗窃”的最佳试用版是功能受限试用版,而不是时间限制试用版。
让我从链接的答案中引用自己:
大多数情况下的普遍问题是,一方面您信任用户(因为您向他们销售产品),但另一方面您不信任他们(因为您试图以某种方式保护您的软件)。当您以这种方式看待它时,您会发现它实际上是多么徒劳。