我有以下场景:
我需要在客户端机器上动态编译程序集,所以目前我正在部署该程序集的源代码以及我的主要可执行文件,然后使用 MSBuild 将源代码动态编译为程序集。
由于我不想与应用程序一起公开分发我的源代码,我正在考虑发送加密的源文件,然后在构建之前在客户端机器上对其进行解密。但即使在这里,任何人都可以在解密点后停止执行,我的源代码在编译和源代码删除之前将在那里未加密。
有没有一种方法可以保护我的源代码,同时在客户端位置编译它?
PS:我知道最好不要担心源代码被盗,但我也不想让脚本小子如此容易地使用它。
编辑:我可能需要一个混淆工具,将源代码转换为混淆代码(不是混淆程序集)。然后,我可以将这个混淆代码与我的应用程序一起发布并即时编译它。
问问题
704 次
2 回答
1
您可以使用混淆(.NET中的混淆),这实际上会使您的代码难以被人类读者理解。
如果这仍然不适合您,那么您可能会考虑将您的逻辑创建为 Web 服务,然后您只需公开您的 API 而不是整个解决方案。话虽如此,这很可能最终会成为更多工作,因为您必须创建一个将使用您的 Web 服务的客户端应用程序。
编辑:根据您的评论,您可能想查看此MSDN 页面,该页面显示了如何通过调用Dotfuscator
. 这应该随您的 IDE 一起免费提供。就我而言,我有一个 MSI 文件(我认为您需要先安装它)位于此处:{VS2010 ISO}\WCU\Dotfuscator\DotfuscatorCE.msi
于 2014-01-30T06:26:46.980 回答
1
随机建议:
为了稍微隐藏代码,您可以将其作为资源嵌入到您的程序集中并在编译前保存。
作为附加步骤,您可以将其保存为 IL 而不是 C# - 可能会更痛苦但更难阅读(特别是如果您使用混淆代码的 IL)。
或者使用 CodeDOM 或 IL 构建器直接从代码创建程序集。
事实上,重组代码可能会更好,这样您根本不需要包含您的代码,只需添加客户的代码......
于 2014-01-30T06:43:30.107 回答