c# dll混淆与整个项目混淆

c# dll obfuscation vs entire project obfuscation

我为我的主要软件产品创建了一个 'keygen',它显然能够生成密钥并进行验证。这是一个 'logic' 注册机,我不想将它用作 Web 服务(我不想强迫用户连接互联网来注册该软件..)。 由于这些原因,我需要用 Dotfuscator 之类的东西对其进行混淆处理,但如果进行混淆处理,我的项目会丢失一些很酷的东西,比如与 .Net 产品 (ClickOnce) 捆绑在一起的自动更新。

那么我的第一个问题是:是否可以将注册机生成为 .dll,对其进行混淆处理并在非混淆处理软件中使用它?

如果是:

  1. 我能否继续使用 ClickOnce 和其他非混淆优势?
  2. 单个(和小的).dll 的混淆与整个项目的混淆是否会让黑客更容易破解注册机?

如果否:

  1. 单个(和小的).dll 的混淆与整个项目的混淆是否会让黑客更容易破解注册机?

最后,您的建议是什么?非常感谢任何帮助,请原谅我糟糕的英语:-)

.NET 混淆的问题在于,任何对 CIL 有相当中等了解的人都会发现任何混淆都相当容易通过,即使他们不能'如果内存没有得到适当的保护,他们就无法通过混淆,他们只能在程序运行的整个过程中监视内存的变化。

任何真正想进入您的计划的人,都会。本机应用程序也是如此。

话虽这么说,如果您想使用反射器保护自己免受普通脚本小子的攻击,那么将注册机编译为 dll 并单独混淆 dll 就足以防止有人发现您的密钥生成算法并使用它来创建一个注册机,但是这仍然使他们有可能修补您的应用程序,混淆会在某种程度上阻止。

总结一下:如果你想防止普通人创建一个注册机编译器并将你的注册机混淆成一个 dll,如果你想同时防止注册机和修补程序的人混淆,请将注册机保留在解决方案中,并且混淆那个。