关于.net:您从混淆程序获得的exe的速度变化吗?

关于.net:您从混淆程序获得的exe的速度变化吗?

Does the exe you get out of obfuscation programs vary in speed?

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


免责声明:我的老板是PreEmptive Solutions,这是Dotfuscator .NET模糊处理程序的创建者。

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

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

字符串加密会在一定程度上对运行时性能产生不利影响,因为必须在运行时将字符串转换回人类可读的文本。

如果您使用其他任何系统/技术(例如Microsoft SLP的安全虚拟机技术)来使方法变得不可读,则由于安全虚拟机,这些方法也将导致运行时性能下降。

其他不产生托管代码汇编作为输出,而是依靠本机代码加载器"预处理"其输出的混淆工具,也可能导致运行时性能下降(尤其是在加载时)。


混淆不应更改代码的运行时性能。如果是这样,则说明您有一个糟糕的混淆器,其作用远不只是混淆。要做的所有混淆都是使您的IL难以阅读。


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


推荐阅读