有没有混淆 C# 源代码的程序? [关闭]

Posted

技术标签:

【中文标题】有没有混淆 C# 源代码的程序? [关闭]【英文标题】:Is there any program that obfuscates C# source code? [closed] 【发布时间】:2021-11-08 20:41:58 【问题描述】:

我们的要求是能够将我们的 DLL 与 ClickOnce 集成。 Dotfuscator 很好地完成了混淆工作,但混淆的 DLL 无法在客户端使用 ClickOnce 进行部署。在我们这边,我们可以完美地处理它。此外,混淆程序集有时会使我们的 .NET CF 应用程序崩溃。结果是一个解决方案,它创建一个临时源并在使用 VS 编译之前对其进行混淆。这确保了编译后的程序集可以与 ClickOnce 集成并与 .NET CF 完全兼容。混淆 C# 源代码(不是程序集)的最佳工具是什么?

【问题讨论】:

只需将您的代码外包给印度的某个承包商即可。你很快就会把它弄糊涂:) 事实上,我们正在用 VC++ 开发一个内部的 C# 源代码混淆器。它允许我们排除具有属性的类和枚举。很好的结果是混淆的源代码可以用VS正常编译,因此DLL与ClickOnce高度兼容。 【参考方案1】:

SmartAssembly - 简单、高效、出色,而且不仅仅是混淆功能。

我们目前将它与ClickOnce 一起使用,它支持Compact Framework - 您只需添加一个后期构建脚本即可。它还具有不同级别的安全性,因此您只需反复试验即可获得最兼容的保护级别。

【讨论】:

+1 虽然我不使用它,但他们在我工作的地方使用它并且对它感到满意 我想我需要把情况解释清楚。我们编译的 DLL 需要经过混淆处理并发送给我们的客户。在客户方面,他们可能希望将我们的 DLL 与他们的产品集成并使用 ClickOnce 工具进行部署。问题是我们在市场上尝试过的所有混淆器工具的混淆 DLL 都与 CLickOnce 不兼容。您的解决方案是针对您的,而不是针对客户的。 @mark - 谁部署 ClickOnce 应用程序? 我们的客户部署它。 @Mark - 那么没有区别。您可以排除某些签名进行混淆,以便人们可以使用您的库,然后 ClickOnce 只需部署已经混淆的库。【参考方案2】:

在大多数情况下,如果您问这个问题,那么您使用的是错误的语言(和框架)。许多使 .NET 强大的东西都与混淆不兼容,因此您不妨使用本机 C++。

ClickOnce 可能是一个例外,但我认为它仍然会严重限制您可以使用的混淆级别。

如果您真的想保护您的 IP,您应该托管一个 Web 服务,这样您的专有代码就不会离开您的计算机。一旦你的代码在别人的 CPU 上运行,你就输掉了隐藏它的战斗。

【讨论】:

【参考方案3】:

查看我公司的SD C# Obfuscator。

【讨论】:

它不允许我下载! @markattwood:向 SD 发送说明,要求提供评估版本。 他们实际上甚至混淆了 System.Collection 命名空间,这不是我们想要的。 SD 混淆器只会混淆您要求它处理的名称。如果您想不混淆系统集合命名空间成员名称,这很容易做到。 @BenVoigt:感谢您注意到这一点。我已经根据 SO 政策规则对其进行了修补。您会注意到这是一个非常早的答案,在政策制定之前。我试图回去修改我所有的旧答案,有些我错过了。感谢您(是的,我记得)的积极支持。在你删除你的笔记后,我会删除它。【参考方案4】:

你不需要混淆源代码,你只需要一个支持 ClickOnce 的程序集混淆器。 Crypto Obfuscator 支持这一点 - 它在构建过程中执行混淆,因此最终位于 ClickOnce 清单和设置中的程序集已经被混淆。

【讨论】:

以上是关于有没有混淆 C# 源代码的程序? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

U3D如何做代码混淆

Flex / Air混淆[关闭]

iPhone/iPad 应用程序代码混淆 - 有可能吗?值得? [关闭]

混淆PHP代码[关闭]

PHP有代码混淆器吗? [关闭]

完整地扒一个C#程序