对于我的主要软件产品,我创建了一个"keygen",它显然能够生成密钥并进行验证。这是一个"逻辑"keygen,我不想把它用作网络服务(我不想强迫用户连接互联网来注册软件…)。出于这些原因,我需要用Dotfuscator之类的东西来混淆它,但如果混淆了,我的项目就会失去一些很酷的东西,比如与.Net产品捆绑的自动更新(ClickOnce)。
然后我的第一个问题是:是否可以将keygen创建为.dll,对其进行模糊处理并在非模糊软件中使用?
如果是:
- 我能继续使用ClickOnce和其他非obuscaption优势吗
- 单个(和小型).dll的模糊处理与整个项目的模糊处理相比,会让黑客更容易破解密钥生成吗
如果否:
- 与整个项目的模糊处理相比,单个(和小型).dll的模糊处理会让黑客更容易破解密钥生成吗
最终,您的要求是什么?谢谢你的帮助,请原谅我糟糕的英语:-)
.NET模糊处理的问题是,任何对C#编译到的CIL有相当中级理解的人都会发现任何模糊处理都很容易完成,即使他们无法通过模糊处理,如果内存没有得到适当的保护,他们也可以在程序的整个操作过程中监控内存的变化。
任何真正想进入你的程序的人,都会。本机应用程序也是如此。
话虽如此,如果你想用反射器保护自己不受普通脚本孩子的攻击,那么将密钥生成编译为dll并仅对dll进行模糊处理就足以防止有人发现你的密钥生成算法并使用它创建密钥生成,然而,这仍然给他们留下了修补应用程序的可能性,这在一定程度上可以防止混淆。
总结:如果你想防止普通人创建密钥生成编译并将你的密钥生成模糊到dll,如果你想同时防止密钥生成和人们修补你的程序模糊,请将密钥生成保留在解决方案中并模糊它。