没有第 3 方工具的程序集混淆

Obfuscation of assemblies without 3rd party tools

有一些第 3 方工具可用于混淆程序集!
看看这个:
Using SmartAssembly with MSBuild

我如何编写一个简单的 class 来混淆我的程序集并且我不想使用任何第 3 方工具,例如 SmartAssembly

如何将 SmartAssembly 作为 dll 导入我的项目并将其用于我的目的?

编辑:我的目标是什么?
我的 C# 代码中有一些密码,我只是想对逆向工程隐藏它们!

我建议您看一下像 Obfuscar 这样的开源项目 - 这绝非易事

您不应在源代码中存储安全信息。将它们写入 XML 或任何其他外部数据源,加密此信息,然后您将不需要任何混淆。

然而,混淆不会解决这种情况,因为它只是替换了变量和参数的名称,而不是它们的实际值。所以如果你有这样的事情:

string password = "topsecret";

Obfuscator 会简单地将其替换为类似于以下内容的内容:

var a="topsecret";

稍微缩短此讨论:没有任何方法可以让您绝对安全地避免任何人都可以获得您的用户凭据。您所能做的就是让这样做变得更加困难,并希望 "attacker" 在他或她成功之前放弃。因此,在大多数情况下,从外部加密密码应该可以满足您的需要。

这就是传说中的 "how do I hide passwords in my sourcecode" 问题。简单的答案:你不能。时期。你所做的任何事情都可能被有足够时间和精力的人撤销。但是,您可以让潜在的黑客更加困难。您可以做的一些事情是密码散列,然后将该散列存储在源代码中。这意味着黑客需要了解散列算法才能逆转它或弄清楚它是什么。我了解到这不值得你花时间。如果有人想要破解您的程序,您根本无法阻止他们。这是编程的可怕真相。