我怎样才能混淆我的C#代码,所以它不能很容易地去混淆?

我免费发布了一大堆工具,但是最近我开始销售一个具有私人研究的应用程序,人们已经能够获得我的源代码,并且有一个人公开发布了我的整个源代码。 我花了很多时间在这个程序上,只是为了让别人破解它,并释放我的整个源代码。

我怎样才能保护我的程序? 我已经尝试过HWID,但人们仍然能够破解它。 我知道我受C#的限制,但使用起来最方便。 我只是需要一种方法来保护我的程序免受试图做到这一点的人。

你可以看看那里的许多混淆工具,例如https://stackoverflow.com/questions/805549/free-obfuscation-tools-for-net中提到的工具(注意:目前无法查看的问题)。;

编辑:上面的链接的问题已被删除,因此无法查看。 作为参考,这里是上面提到的一些高级用户的帮助下发布的当前工作链接列表:

http://gapotchenko.com/eazfuscator.net
http://codefort.org/download
http://orangeheap.blogspot.nl
http://confuser.codeplex.com (成功https://yck1509.github.io/ConfuserEx/)http://ntoolbox.com

那么,像C#/ Java这样的语言的问题是,它们通常更容易去混淆。 确保这一点的方法通常是把这些东西放到一个web服务中,但是你说你不能这么做。 将特定的非平凡函数移植到像C这样的语言,然后将其混淆。 您的C#程序可以使用reflection来调用这个外部/非托pipe的DLL。 这会增加去混淆的难度,但问题是,如果有人想要它足够糟糕,他们可以把它弄清楚,因为它是客户端。

这可能是法律行为是唯一真正的解决办法,但这不是一个法律咨询网站,如果是这样的话,我也没有资格提供。

另外,这可能是一个商业决定。 考虑让您的软件开放源代码并发布捐赠链接。 我也没有资格提供商业build议,但这是值得考虑的。 这实际上可能会增加您的收入,更不用说发布开源软件带来的其他好处了。

有Dotfuscator( http://www.preemptive.com/products/dotfuscator/overview )。 但是在某些情况下,最好的解决scheme是提供你作为一个网站的function(软件即服务)。

考虑这个工具,例如将VB转换为C#: http : //converter.telerik.com/

或者这个工具来格式化JSON: http : //jsonformatter.curiousconcept.com/

这可能会或可能不会为你工作。 我不知道你要保护的软件的本质是什么。

不,您的代码需要包含解密自己所需的信息,这是一个不可能解决的问题。

您的最佳解决scheme是将您的知识产权放在只有您有权访问的云中的服务器上。 给你的客户一个独特的login,审核他们的访问来检查滥用情况,在你的客户机器上卸载尽可能多的烦人的工作,但保持你的algorithmlocking在云端。