是否有可能混淆原始C#源代码?

时间:2012-08-17 15:55:27

标签: c#

我见过很多C#混淆器,它们都需要一个程序集(.exe,.dll等) 为什么不能混淆源代码?就像你可以用javascript做的那样:http://www.javascriptobfuscator.com

3 个答案:

答案 0 :(得分:4)

混淆源代码没有任何意义。这是因为源代码是为了维护或经验共享而共享的。这就是混淆目标可部署工件的原因,例如exedll ......

如果JavaScript代码本身是可部署的工件,那么对于Java Script 对知识产权保护具有完美的意义。< / p>

答案 1 :(得分:2)

您混淆了您向客户发布的内容,而不是您必须保持清楚的内容以便维护它。

您发布javascript文件,对其进行模糊处理(并保留非模糊文件以维护应用程序)。所以你有两组javascript文件:source和release。如果存在明确的已发布编译格式,则可能是混淆目标。

您发布了.class文件,而不是.java文件,因此您对.class进行了模糊处理。

你释放exe,而不是c或c#文件,所以你混淆了exe。

其他具体原因:

  • C或C#文件(或java)可以在不同的应用程序中使用。根据应用程序,可能被删除或更改的内容将有所不同
  • C,C#或java文件包含无法仅在一个文件中剥离的编译所需的项目:您必须对整个集合进行模糊处理(例如,如果重命名类或可见字段,通常在混淆时在内存中维护一个表格。

答案 2 :(得分:0)

我同意@dystroy,因为你混淆了你发布的内容。

但要直接回答提出的问题 - b / c很少有人发布C#代码。

如果您需要发布C#代码,并且希望对其进行模糊处理,我建议使用一两个代码:

  1. 使“内部”所有类型都不需要是“公共”
  2. 编译包含要发布的源代码的程序集
  3. 使用RedGate SmartAssembly来混淆该程序集。
  4. 使用JetBrains dotPeek显示混淆的源代码,然后转储到 磁盘。
  5. Zip混淆源代码并将其释放。