【问题标题】:Obfuscation vs Packing [closed]混淆与打包[关闭]
【发布时间】:2014-03-04 00:32:51
【问题描述】:

在我的应用程序中“混淆”代码与使用 Themida 等解决方案“打包”代码有什么区别?

当有人试图盗版我的应用程序时,这两个术语有何不同?

编辑:重组问题。

【问题讨论】:

  • 您所说的“应用程序仍可运行但不可读”是什么意思 - 它应该在没有您的应用程序的情况下运行还是不应该运行?
  • 您的最终目标是发布产品吗?您不希望人们访问源代码吗?如果是这样,有比通过默默无闻的安全性更好的方法来处理代码盗版。
  • Omer,我编辑了这篇文章。 Blue Ice,是的,基本上就是这样,但这只是一个自学项目,所以我花不起。
  • 您的概念有缺陷,因为攻击者会对您的“解密器”程序进行反向工程。或者只是等到解密的程序加载到内存中并在那里检查它。没有大量研究工作就无法获得安全性。做研究,然后问一个更有针对性的问题。
  • 亲爱的,我已经重组了这个问题,试图纠正旧的错误。感谢大家提供反馈和批评! :)

标签: c# security encryption obfuscation packing


【解决方案1】:

不花钱也很简单,看看Dotfuscator,有免费版,自带Visual Studio。

【讨论】:

    【解决方案2】:

    您在这里谈论的是一些独立且不相关的事情。让我们定义一些术语。

    混淆

    这通常涉及自动重命名尽可能多的非公共代码。它仍然是相同的代码并且将以完全相同的方式运行,并且像以前一样容易反汇编您的程序,但它可能会延迟人们在将代码组合在一起时准确理解代码在做什么。

    加密

    这通常涉及将一个信息序列转换为另一个信息序列。加密文件(例如您的程序集)将意味着无法再轻松检查它,但也无法再运行它。CLR 需要能够理解您的程序,以及它是否已加密那么它不知道你想说什么。

    那么现在让我们谈谈你的问题。

    如果我使用程序加密我的程序会怎样?

    这是一个非常糟糕的主意。假设您有加密程序和加密程序。是什么阻止某人只是反汇编加密程序,使用相同的加密算法、密钥、盐等,然后自己解密你的程序?您的加密数据仅与您的加密方法一样安全。

    那我该如何阻止别人盗版我的程序呢?

    这是一个很好的问题,很多人一直在尝试寻找解决方案。您可以选择一些路径,DRM、许可服务,或者在计算机本身上没有主动运行的东西(即网络软件)。

    如果您对这些主题之一有更具体的问题,欢迎您提出更具体的问题。

    【讨论】:

      【解决方案3】:

      我认为您需要实现一个插件架构。解密应用程序插入主应用程序。

      主应用程序有一个接口IDecryptorDecrypt 方法。

      解密应用程序有一个类Decryptor,它实现了接口。

      主应用程序检查IDecryptor 服务是否已注册(也就是插入)。如果确实注册了,可以调用Decrypt方法。

      这还没有说明安全。 它涉及MD5和SHA等算法。他们需要一个密码和一些 salt。并给你一个哈希字符串(看起来像随机文本)。你不保存密码。你保存哈希字符串!

      关于安全性和加密有很多话要说。简而言之,这就是我所知道的一切。

      【讨论】:

      • 我可能会避免在同一句话中提及 MD5 和“安全性”... ;)
      猜你喜欢
      • 2015-01-17
      • 1970-01-01
      • 1970-01-01
      • 2017-02-28
      • 2023-03-31
      • 2014-10-31
      • 2016-07-13
      • 1970-01-01
      • 2013-11-04
      相关资源
      最近更新 更多