【问题标题】:How can I obfuscate my c# code, so it can't be deobfuscated so easily? [closed]我怎样才能混淆我的 c# 代码,所以它不能那么容易地去混淆? [关闭]
【发布时间】:2021-05-02 01:20:54
【问题描述】:

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

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

【问题讨论】:

  • 当你说“破解”时,你的意思是“反编译”吗?
  • 虽然HighCore链接的这个问题和这个有点不一样,但是那个问题的top answer直接回答了这个问题,很好回答。
  • 可能是OT,但是你是怎么保证代码真的被盗的?
  • @ChrisMantle:考虑到问题是如何保护商业软件,我觉得有趣的是,该问题的答案告诉您如何在该程序商业化后继续免费使用该程序。 :)

标签: c# security obfuscation protection


【解决方案1】:
【解决方案2】:

有 Dotfuscator (http://www.preemptive.com/products/dotfuscator/overview)。但在某些情况下,最好的解决方案是提供您作为网站所做的工作(软件即服务)。

考虑使用此工具将 VB 转换为 C#:http://converter.telerik.com/

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

这可能适合您,也可能不适合您。我不知道您要保护的软件的性质是什么。

【讨论】:

  • 是的。但是,如果愿意的话,任何客户端代码都可以被破解。过去 20 年的每一款 PC 游戏,无论 SecuROM 和其他 DRM,总是被破解。网络是唯一真正安全的途径。
  • 是的。什么是我的选择。我必须将程序分发给每个人,我真的不能只做服务类型的事情。我已经尝试过 HWID 和更多的东西,几乎所有这些都被绕过了。
【解决方案3】:

嗯,像 C#/Java 这样的语言的问题在于它们通常更容易去混淆。确保这一点的方法通常是将这些东西放入网络服务中,但你说你不能真正做到这一点。将特定的重要函数移植到像 C 这样的语言上,然后混淆它呢?然后,您的 C# 程序可以使用反射来调用此外部/非托管 dll。这会增加去混淆的难度,但问题是如果有人想要它足够糟糕,他们可以解决它,因为它是客户端。

可能法律诉讼是这里唯一真正的解决方案,但这不是提供法律建议的网站,如果是,我也没有资格提供。

此外,这可能是一项业务决策。考虑使您的软件开源并发布捐赠链接。我也没有资格提供商业建议,但这值得考虑。它实际上可能会增加您的收入,更不用说发布开源软件带来的其他好处了。

【讨论】:

    【解决方案4】:

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

    您最好的解决方案是将您的知识产权放在只有您可以访问的云服务器上。为您的客户提供一个独特的登录名,审核他们的访问权限以检查是否存在滥用行为,将尽可能多的繁琐工作卸载到您的客户机器上,但将您的算法锁定在云端。

    【讨论】:

      猜你喜欢
      • 2019-04-10
      • 1970-01-01
      • 1970-01-01
      • 2018-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多