我可以混淆编译的.NET可执行文件/程序集吗?

时间:2011-09-20 20:08:57

标签: c# wpf obfuscation eazfuscator

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

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

所以,如果我去:

Eazfuscator.NET MyProgram.exe

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

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

EazFuscator.NET SomeDLLMyProgramUses.dll

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

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

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

6 个答案:

答案 0 :(得分:6)

您可以尝试使用Dotfuscator社区版。

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

答案 1 :(得分:4)

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

答案 2 :(得分:2)

如果您正在使用反射,那么混淆工具可能会破坏您的代码。在混淆期间,类型名称通常会更改,因此您的反射可能无法按预期工作,尤其是在您按名称引用类型时。使用像reflector这样的工具来查看模糊处理的程序集,您将能够看到最新情况。

答案 3 :(得分:2)

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

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

.Net Obfuscator

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

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

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