我免费发布了一堆工具,但最近我开始销售一个有私人研究的应用程序,人们已经能够获得我的源代码,并且一个人公开发布了我的整个源代码。我花了很多时间在这个程序上,只是为了让别人破解它,并释放我的整个源代码。
我该如何保护我的程序?我尝试过HWID,但人们仍然可以破解它。我知道我受限于C#,但它最方便使用。我只需要一种方法来保护我的程序免受试图这样做的人的影响。
答案 0 :(得分:30)
您可以查看那里的许多混淆工具,例如https://stackoverflow.com/questions/805549/free-obfuscation-tools-for-net中提到的工具(注意:目前无法查看的问题)。
编辑:上述链接的问题已被删除,因此无法查看。 作为参考,这里是在一些超级用户的帮助下提取的上述问题中发布的当前工作链接列表:
http://gapotchenko.com/eazfuscator.net
http://orangeheap.blogspot.nl
http://confuser.codeplex.com(由https://yck1509.github.io/ConfuserEx/继承)
http://ntoolbox.com
答案 1 :(得分:7)
嗯,像C#/ Java这样的语言的问题在于它们通常更容易去混淆。确保这一点的方法通常是把这些东西放到网络服务中,但你说你不能真的这样做。如何将特定的非平凡函数移植到像C这样的语言上,并对其进行模糊处理。然后,您的C#程序可以使用反射来调用此外部/非托管dll。它会增加去混淆的难度,但问题是,如果有人想要它足够糟糕,他们可以把它弄清楚,因为它是客户端。
这可能是法律诉讼是唯一真正的解决方案,但这不是法律建议的网站,如果是的话,我没有资格提供。
此外,这可能是一个商业决策。考虑使您的软件开源并发布捐赠链接。我也没资格提供商业建议,但这值得考虑。它实际上可能会增加您的收入,更不用说发布开源软件带来的其他好处。
答案 2 :(得分:3)
不,您的代码需要包含解密自身所需的信息,这是一个不可能解决的问题。
您最好的解决方案是将您的知识产权放在只有您有权访问的云服务器上。为您的客户提供唯一的登录信息,审核他们检查滥用的访问权限,卸载客户机器上的大量工作,同时将您的算法锁定在云中。
答案 3 :(得分:2)
有Dotfuscator(http://www.preemptive.com/products/dotfuscator/overview)。但在某些情况下,最好的解决方案是提供您作为网站(软件即服务)所做的工作。
考虑使用此工具将VB转换为C#:http://converter.telerik.com/
或者使用此工具格式化JSON:http://jsonformatter.curiousconcept.com/
这可能适用于您,也可能不适合您。我不知道你想要保护的软件的性质是什么。