5

.Net 有许多混淆程序,我已经尝试过一个,我的 exe 在混淆时似乎要慢得多。所有的混淆程序都具有相同的效果还是我选择了一个不好的程序?我希望有些比其他更好,如果你知道一个快速的,请告诉我。

4

3 回答 3

8

免责声明:我的雇主是 PreEmptive Solutions,Dotfuscator .NET 混淆器的创建者。

它可能取决于您使用的混淆器以及您在其中启用的选项。我将从 Dotfuscator 的经验谈起。

如果您使用重命名和删除,混淆程序集的加载时间和内存占用可能会有所改善,部分原因是您的所有/大部分方法、字段等都被重命名为更小的名称(例如“ThisVeryLongMethodName(SomeVeryLongParameterName)”变为“a( a)" 这样您就可以在程序集大小和加载时间方面获得一些好处。除了删除之外,您还可以删除永远不会调用的方法等,并再次减小二进制文件的大小。

字符串加密可能会对运行时性能产生轻微的负面影响,因为字符串必须在运行时转换回人类可读的文本。

如果您使用任何其他系统/技术(如 Microsoft SLP 的安全 vm 技术)来呈现方法不可读,这也会因安全 vm 而导致运行时性能损失。

其他不生成托管代码程序集作为输出而是依赖本机代码加载器“预处理”其输出的混淆工具也可能导致运行时性能下降(尤其是在加载时)。

于 2008-09-15T17:04:40.847 回答
5

混淆不应改变代码的运行时性能。如果是这样,那么你有一个糟糕的混淆器,它所做的不仅仅是混淆。应该做的所有混淆就是使您的 IL 难以阅读。

于 2008-09-15T16:47:16.690 回答
2

工具可以使用不同的混淆方法。有一些简单的重命名方法不会以任何方式影响性能。其他方法可能会改变代码的流程。这可能会对性能产生负面影响。您可能想查看其他混淆器并尝试不同的设置。

于 2008-09-15T16:51:59.567 回答