C# 混淆与包装

C# 混淆与包装,c#,security,encryption,obfuscation,packing,C#,Security,Encryption,Obfuscation,Packing,在我的应用程序中混淆代码与使用类似Themida的解决方案打包代码有什么区别 当有人试图盗版我的应用程序时,这两个术语有什么不同 编辑:重新构造的问题。不用花钱就可以很容易做到这一点。有一个免费的版本,并且随Visual Studio提供。我认为您需要实现一个插件架构。解密应用程序插入主应用程序 主应用程序有一个带解密方法的接口IDecryptor 解密应用程序有一个实现接口的类解密程序 主应用程序检查IDecryptor服务是否已注册,即是否已插入。如果它确实已注册,则可以调用Decrypt方

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

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


编辑:重新构造的问题。

不用花钱就可以很容易做到这一点。有一个免费的版本,并且随Visual Studio提供。

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

主应用程序有一个带解密方法的接口IDecryptor

解密应用程序有一个实现接口的类解密程序

主应用程序检查IDecryptor服务是否已注册,即是否已插入。如果它确实已注册,则可以调用Decrypt方法

这还没有说明安全问题。 它涉及MD5和SHA等算法。他们带了密码和一些盐。给你一个看起来像随机文本的散列字符串。你不保存密码。保存哈希字符串


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

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

混淆

这通常涉及自动重命名尽可能多的非公共代码。它仍然是相同的代码,并且将以完全相同的方式运行,拆解程序与以前一样容易,但这可能会延迟某些人在组装代码时理解代码的确切功能

加密

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

现在让我们谈谈你的问题

如果我使用一个程序来加密我的程序呢

这是一个非常糟糕的主意。假设你有加密程序和加密程序。什么能阻止某人仅仅使用相同的加密算法、密钥、salt等来分解加密程序,而仅仅解密你的程序本身?加密数据的安全性仅与加密方法相同

那我如何阻止人们盗版我的程序呢

这是一个很好的问题,这是一个相当多的人一直试图找到一个解决方案一段时间了。您可以选择以下几种路径:DRM、授权服务,或者在计算机上运行一些不活跃的东西,即web软件


如果您对其中一个主题有更具体的问题,欢迎您提出更具体的问题。

您所说的“应用程序仍将运行,但不可读”是什么意思?它是否应该在没有应用程序的情况下运行?您的最终目标是发布产品吗?您不希望人们访问源代码吗?如果是这样的话,有更好的方法来对付代码盗版,而不是通过隐晦的安全措施。Omer,我编辑了这篇文章。Blue Ice,是的,基本上就是这样,但是这只是一个自学项目,所以我不能花钱。你的概念是有缺陷的,因为攻击者会对你的“解密程序”进行反向工程。或者只需等待解密程序加载到内存并在内存中进行检查。安全性不是不需要大量研究就能掌握的东西。做研究,然后问一个更有针对性的问题。亲爱的各位,我已经重新组织了这个问题,试图纠正过去的错误。感谢大家提供反馈和批评M!:我可能会避免在同一句话中提及MD5和“安全性”;