我的应用程序中的“混淆”代码与使用Themida等解决方案“打包”它之间有什么区别?
对于试图盗版我的应用程序的人来说,这两个术语有何不同?
编辑:重组问题。
答案 0 :(得分:1)
这很容易做到这一点而不花钱看看Dotfuscator,有一个免费版和Visual Studio附带。
答案 1 :(得分:1)
你在谈论一些单独和无关的事情。我们来定义一些术语。
混淆
这通常涉及自动重命名尽可能多的非公共代码。它仍然是相同的代码,并且将以完全相同的方式运行,并且像以前一样容易地反汇编程序,但是它可能会让某人在他们将这些部分放在一起时确切地理解代码正在做什么。
<强>加密强>
这通常涉及将一系列信息翻译成另一个信息序列。加密文件(例如程序集)将意味着它不再容易检查,但它也不能再运行。 CLR需要能够理解您的程序,以及它是否已加密然后它不知道你想说什么。
现在让我们谈谈你的问题。
如果我使用程序加密程序怎么办?
这是一个非常糟糕的主意。假设您有加密程序和加密程序。什么是阻止某人只是反汇编加密程序,使用相同的加密算法,密钥,盐等,只是自己解密你的程序?您的加密数据仅与加密方法一样安全。
然后我如何阻止人们盗用我的程序?
这是一个很好的问题,很多人一直试图找到一个解决方案。您可以使用一些路径,DRM,许可服务,或者在计算机本身上没有主动运行的东西(即网络软件)。
如果您对其中一个主题有更具体的问题,欢迎您提出更具体的问题。
答案 2 :(得分:0)
我认为您需要实施插件架构。解密应用程序插入主应用程序。
主应用程序的接口IDecryptor
带有Decrypt
方法。
解密应用程序有一个实现接口的类Decryptor
。
主应用程序检查IDecryptor
服务是否已注册(插入了a.k.a.)。如果确实已注册,则可以调用Decrypt
方法。
这对安全性一无所知。 它涉及MD5和SHA等算法。他们拿密码和一些盐。并给你一个哈希字符串(看起来像随机文本)。你不保存密码。你保存哈希字符串!
关于安全性和加密有很多话要说。简而言之,这就是我所知道的。