如何混淆我的C#代码,使得它不容易被反混淆?

43

我发布了一堆免费工具,但最近开始销售一款应用程序,其中包含私人研究,但人们已经能够获得我的源代码,还有一个人公开发布了我的全部源代码。我花了很多时间编写这个程序,只为让别人破解并发布我的全部代码。

我该如何保护我的程序?我试过使用硬件ID(HWID),但人们仍然能够破解它。我知道我受到C#的限制,但它是最方便使用的。我只需要一种方法来保护我的程序,防止人们尝试这样做。


当你说“破解”时,你是指“反编译”吗? - egrunin
1
可能是重复问题:https://dev59.com/9nRB5IYBdhLWcg3wr44U - Federico Berasategui
尽管HighCore链接的问题与这个有点不同,但该问题的最佳答案直接回答了这个问题,并且回答得很好。 - hatchet - done with SOverflow
可能有些离题,但是你如何确保代码真的被盗了? - Antonio Ragagnin
没有技术解决人性的问题。有些人总是会偷窃。当你尝试添加对策时,你不可避免地会达到一个临界点,在这个点上,你会给合法用户带来更多的不便,而那些盗版软件的人则不会受到太多影响。 - Damien_The_Unbeliever
显示剩余3条评论
4个回答

37

5
你仍然可以在网络存档机器上查看已删除的问题“_free-obfuscation-tools-for-net_”(https://stackoverflow.com/questions/805549/free-obfuscation-tools-for-net)。(https://web.archive.org/web/20130627174912/http://stackoverflow.com:80/questions/805549/free-obfuscation-tools-for-net) - stomy
1
Babel Obfuscator 怎么样?(他们还有 .NET Licensing) - stomy
1
链接codefort.org/download已经失效。请在这里查看。 - stomy
1
confuser.codeplex.com/ 已被 https://yck1509.github.io/ConfuserEx/ 取代。 - stomy
3
ConfuserEx现在已被https://github.com/XenocodeRCE/neo-ConfuserEx所取代。 - Steve Smith
显示剩余2条评论

9
好的,像C# / Java这样的语言存在一个问题,那就是它们一般很容易被反混淆。通常保护的方式是将这些内容放入一个Web服务中,但你说你无法做到这一点。那么考虑将特定的非平凡功能移植到像C这样的语言中,并对其进行混淆。此时,你的C#程序可以使用反射来调用此外部/非托管dll。这将使反混淆变得更加困难,但问题是,如果有人真的想要它,他们仍然可以在客户端上找出它。
也许法律行动是唯一的解决方案,但这不是提供法律建议的网站,即使需要,我也没有资格给予建议。
此外,这可能是一个商业决策。考虑将你的软件开源并发布捐赠链接。我也没有资格提供商业建议,但这值得考虑。这实际上可能会增加你的收入,更别提发布开源软件带来的其他好处了。

4

这是事实。但只要有意愿,任何客户端代码都可以被破解。过去20年的每个PC游戏都被破解了,无论是SecuROM还是其他DRM。网络是唯一真正安全的途径。 - Trevor Elliott
是的。对我来说有什么选择?我必须将程序分发给每个人,我真的不能只做一个服务类型的东西。我已经尝试了HWID和更多的东西,基本上所有这些都被绕过了。 - Ben

3

不,你的代码需要包含解密所需的信息,这是一个无法解决的问题。

最好的解决方案是将您的知识产权放在只有您可以访问的云服务器上。为客户提供独特的登录凭证,审核他们的访问以检查滥用行为,尽可能地将繁重的工作转移至客户端,但保持算法锁定在云中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接