4

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

4

3 回答 3

4

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

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

于 2012-08-17T15:56:51.100 回答
2

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

您发布 javascript 文件,对它们进行混淆处理(并保留未混淆的文件以维护应用程序)。所以你有两组 javascript 文件:源文件和已发布文件。如果有一个不同的发布编译格式,这可能是混淆目标。

您发布 .class 文件,而不是 .java 文件,因此您混淆了 .class。

您发布 exe,而不是 c 或 c# 文件,因此您混淆了 exe。

其他具体原因:

  • C 或 C# 文件(或 java)可用于不同的应用程序。并且可能被剥离或更改的内容将根据应用程序而有所不同
  • 一个 C、C# 或 java 文件包含编译所需的项目,这些项目不能仅在一个文件中剥离:您必须混淆整个集合(例如,如果您重命名一个类或可见字段,您通常会在内存中维护混淆时的表格)。
于 2012-08-17T15:57:30.673 回答
0

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

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

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

  1. 使“内部”所有不需要“公共”的类型
  2. 编译包含要发布的源代码的程序集
  3. 使用 RedGate SmartAssembly 混淆该程序集。
  4. 使用 JetBrains dotPeek 显示经过混淆的源代码,并转储到磁盘。
  5. 压缩混淆源代码并发布。
于 2013-10-30T19:53:07.813 回答