源代码的动态解密和编译



我有以下方案:
我需要在客户端计算机上动态编译一个程序集,因此目前,我正在部署该汇编的源,以及我的主要可执行文件,然后使用MSBuild将源动态编译到汇编中。
由于我不想与应用程序一起公开分发我的源,因此我考虑运送加密的源文件,然后在构建之前在客户端机器上解密它。但是,即使在这里,任何人都可以在解密点后停止执行,而我的消息来源将在编译和删除源之前未经加密。
有什么方法可以保护我的来源并同时在客户位置进行编译?

PS:我知道最好停止担心盗窃源代码,但我也不想让它如此轻松地适用于脚本Kiddie。


编辑:我可能需要一个混淆的工具,该工具将源代码转换为混淆的代码(而不是混淆的汇编)。然后,我可以将此混淆的代码与我的应用程序一起运送并拍摄。

您可以使用混淆(.NET中的混淆),从本质上讲,这将使您的代码难以理解。

如果仍然没有为您削减它,那么您可以考虑将逻辑创建为Web服务,然后您只需揭示API而不是整个解决方案即可。话虽如此,这很可能最终会成为更多的工作,因为您必须创建一个客户应用程序,该应用程序将消耗您的Web服务。

编辑:根据您的评论,您可能需要查看此MSDN页面,该页面显示如何通过调用Dotfuscator来自动化混淆过程。这应该与您的IDE自由运送。就我而言,我有一个MSI文件(我认为您需要首先安装它)位置:{VS2010 ISO}WCUDotfuscatorDotfuscatorCE.msi

随机建议:

对于稍微隐藏的代码,您可以将其嵌入到您的组件中并保存在编译之前。

作为附加步骤,您可以将其保存为IL而不是C# - 可能更痛苦,但更难阅读(尤其是如果您使用混淆代码的IL)。

或使用编码或IL构建器直接创建组件。

的确,重组代码可能更好,因此您根本不需要包含代码,只需添加客户端的代码...

最新更新