我们从混淆程序中获得的exe速度是否有所不同?

时间:2020-03-05 18:53:55  来源:igfitidea点击:

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

解决方案

回答

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

回答

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

回答

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

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

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

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

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

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