【问题标题】:Protect code of WPF application written in .Net 4.7保护用 .Net 4.7 编写的 WPF 应用程序代码
【发布时间】:2021-09-09 21:35:16
【问题描述】:

我知道这个问题被问了很多次,我阅读了每个问题,但没有找到适合我的案例的解决方案。 我们的团队在 .Net 4.7.2 中制作了一个应用程序,几天后我们必须部署它。我们使用的是网络服务,所以即使用户破解了许可证系统,他们也无法访问服务。我们唯一关心的是防止其重复(有人可以以他的品牌转售,这发生在我们以前的版本中)因为这些 Web 服务(简单的 CRUD 操作)非常容易实现,因此有人可以更改 URL 到那里的服务器并复制这些服务.为了防止这种情况,我们正在使用对服务器的加密调用。我们现在面临的问题是保护这个加密算法,而混淆是不够的。 同样,我们唯一关心的是保护代码。抱歉英语不好。 我知道 .Net Reactor,但有许多解包器可以解包 .Net reactor 保护的应用程序。我不知道这些解包器是否适用于当前版本。

  • 我应该使用 .Net Reactor 吗?
  • 是否有任何解决方案可以将 .Net 4.7 代码转换为本机代码或任何其他方式来防止这种情况(混淆或提前编译除外)?

【问题讨论】:

  • 除了混淆(这会使潜在的小偷更难,但并非不可能)之外,您基本上不走运。无论您采取何种解决方案,这项任务都可能使黑客的生活更加艰难,但您无法真正阻止它。如果人们真的以他们的名义(或多或少公开)出售你的东西,你应该咨询律师。

标签: c# .net wpf


【解决方案1】:

您分发的代码可以/将被各种各样的人分析(甚至复制/克隆),这是无法解决的。对于坚定的对手来说,即使只分发编译好的二进制文件也不是真正的障碍。像 Java 的 JVM 或 .NET 这样的半编译语言通常在二进制文件中保留大量源信息,以至于有时反编译为可理解的源或多或少是自动的。源代码混淆在这里会有所帮助,但这会引入另一个步骤(并且可能会引入错误!),但攻击者可能只会对本地化的代码片段感兴趣。

如果服务“易于复制”,正如您所说,我想知道它们是否真的那么有价值。最有价值的“网络服务”使用简单、甚至众所周知且公开可用的协议(如“在此处下载库以使用我们的服务”)来访问它们,但如果我要创建自己的克隆,例如YouTube 我无处可去,价值不在在界面中,而是在提供的服务中。

重新保密:永远不要忘记Kerckhoffs' rules。特别是,自制加密通常非常容易破解,即使仅在硬件中(如MiFare card hack),也可以通过一些独创性获得确切的算法,除非经过精心设计,否则它将被破解短订单。请务必使用公认的加密工具,例如 AES、Diffie-Hellman、RSA。是的,它可能会产生一些额外的成本(无论如何,所有感兴趣的东西都有免费/开源的替代方案),但它比你想出的任何东西都安全得多。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多