我可以对已编译的.NET可执行文件/程序集进行模糊处理吗?

所以我试图在我的程序编译后对其进行模糊处理。 我很确定你是怎么做的(?)

我正在使用一个非常流行的名为EazFuscator的免费软件,它有一个很好的小命令行工具。

所以,如果我去:

Eazfuscator.NET MyProgram.exe 

它会成功地混淆它,当它完成后,我会尝试运行我的程序并崩溃! (给我一些运行时exception)

我尝试的另一件事是混淆我的程序使用的DLL之一:

 EazFuscator.NET SomeDLLMyProgramUses.dll 

它会成功地混淆它,但是当我运行我的程序崩溃时……

我首先想知道,无论这个EazFuscator程序如何,是否有可能混淆.DLL和.EXE文件? 它通常不应该打破它们吗?

注意:我的程序中确实有一些反映,也许这就是造成问题的原因..但我不是百分百肯定的。

有Dotfuscator社区版,您可以尝试。

一般来说,混淆器不应该破坏他们混淆的应用程序。 如果您可以重现该问题,请联系制造商。

大多数混淆工具都具有允许您管理混淆级别的设置 – 如类型名称,方法名称,字符串等。 由于工具对原始IL代码执行的这些更改,您的混淆程度可能导致IL代码被破坏。 检查可用设置并尝试避免其中一些设置。

如果您使用reflection,那么混淆工具可能会破坏您的代码。 在混淆期间,类型名称通常会更改,因此您的reflection可能无法按预期工作,尤其是在您按名称引用类型时。 使用像reflection器这样的工具看看你的模糊组件,你将能够看到最新的情况。

是的,我们需要在编译后对程序集进行模糊处理。 assembly由混淆器再次构建。 所以我们不需要担心编译和构建它。

我使用的是免费的混淆器FxProtect。 Advance Professional版本也可用,但它不是免费的。 你可以尝试一下…

.Net混淆器

不,您通常不会阻止您的可执行程序。 我确定你一直在思考它,因为你发布了你的问题,可以想象为什么。

对源代码运行模糊处理,然后将其编译为可交付项。

您的代码是否被混淆破坏取决于您在代码中执行的操作。 如果你在那里使用reflection几乎肯定是根本原因。

过去CLISecure对我来说效果很好(甚至在混合模式程序集中)……但我们的代码库中没有使用任何reflection。