1

所以我试图在编译后混淆我的程序。我很确定这就是你的做法(?)

我正在使用一个非常流行的免费软件,叫做 EazFuscator,它有一个不错的小命令行实用程序。

所以如果我去:

Eazfuscator.NET MyProgram.exe

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

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

EazFuscator.NET SomeDLLMyProgramUses.dll

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

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

注意:我的程序中确实有一些反思,也许这就是导致问题的原因..但我不是 100% 确定。

4

6 回答 6

6

Dotfuscator社区版,你可以试试。

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

于 2011-09-20T20:17:55.430 回答
4

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

于 2011-09-20T20:19:07.853 回答
2

如果您使用反射,那么混淆工具可能会破坏您的代码。在混淆期间,类型名称通常会更改,因此您的反射可能无法按预期工作,尤其是当您按名称引用类型时。使用反射器之类的工具来查看您的混淆程序集,您将能够看到发生了什么。

于 2011-09-20T20:26:48.207 回答
2

是的,我们需要在编译后混淆我们的程序集。程序集由混淆器再次构建。所以我们不需要担心编译和构建它。

我正在使用免费的混淆器 FxProtect。高级专业版也可用,但不是免费的。你可以试试...

.Net 混淆器

于 2012-04-17T10:45:29.723 回答
0

不,您通常不会混淆您的可执行程序。我敢肯定,自从您发布问题以来,您一直在考虑它,并且可以想象为什么。

对您的源代码运行混淆,然后将其编译为可交付成果。

于 2011-09-20T20:17:30.893 回答
0

您的代码是否被混淆取决于您在代码中所做的事情。如果你在那里使用反射,那几乎肯定是根本原因。

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

于 2011-12-07T17:53:38.273 回答