我有一个Visual Studio 2008的解决方案,其中包含多个DLL文件,网站应用程序使用它们作为主项目。这是一个商业银行和会计软件(轻客户端),我不希望客户在绕过我的情况下获取源代码。
我希望在通过“发布”菜单将所有生成的程序集发布到Web服务器之前,对它们进行混淆。
我应该如何做?如何在构建和发布之前插入混淆步骤?使用msbuild吗?
编辑:感谢大家的回答!但我的问题更多地关于具体任务(在VS中发布时混淆)而不是一般的混淆。
我有一个Visual Studio 2008的解决方案,其中包含多个DLL文件,网站应用程序使用它们作为主项目。这是一个商业银行和会计软件(轻客户端),我不希望客户在绕过我的情况下获取源代码。
我希望在通过“发布”菜单将所有生成的程序集发布到Web服务器之前,对它们进行混淆。
我应该如何做?如何在构建和发布之前插入混淆步骤?使用msbuild吗?
编辑:感谢大家的回答!但我的问题更多地关于具体任务(在VS中发布时混淆)而不是一般的混淆。
市面上有许多混淆产品。
Visual Studio甚至内置了一个 - DotFuscator,但是还有其他的选择。
这里有一些DotFuscator的文档。
然而,即使进行混淆,一个决心坚定的黑客仍然可以反向工程化你的代码。
永远不要向客户端发送您不信任他们的任何内容。如果您使用的语言需要将可信信息发送给不受信任的客户端,则这是愚蠢的。
请查看此帖子:如何保护 .NET 代码免受反向工程?
实际上,你无法完全保护你的代码免受反向工程。最好的方法是使用像 Dotfuscator 这样的工具。
如果你的代码能够正常工作,那么诚实的客户很少会尝试重新编写或篡改它。如果客户不诚实,你所能做的有效措施很少。
与其担心这个问题,不如关注生产高质量的产品,让诚实的客户为之买单。
我同意上述观点,即不应将代码发布给不受信任的方。混淆只是使您的代码难以理解,但有办法可以绕过它。
话虽如此,如果您真的想混淆您的代码,可以尝试Easfuscator.NET。
一些混淆器支持将混淆作为构建过程的一部分来执行,以便发布的应用程序已经被混淆。
Crypto Obfuscator 是这样一个工具 - 它支持与 MSBuild 集成,从而使混淆步骤成为发布或 ClickOnce 的一部分。