有很多针对.Net的混淆程序,我已经尝试了一个,我的exe在混淆时似乎要慢得多。所有的混淆程序都有相同的效果,还是我选择了一个不好的程序?我希望有些人比其他人好,如果你知道一个快速的让我知道。
答案 0 :(得分:8)
免责声明:我的雇主是PreEmptive Solutions,Dotfuscator .NET混淆器的创建者。
它可能取决于您使用的混淆器以及您在其中启用的选项。我将根据Dotfuscator的经验发言。
如果使用重命名和删除,可能会有混淆程序集的加载时间和内存占用量增加,部分原因是所有/大多数方法,字段等都重命名为更小的名称(例如“ThisVeryLongMethodName(SomeVeryLongParameterName)”变为“a(a)”因此你可以获得装配尺寸的一些好处,通常还有加载时间。除了删除之外你还可以删除从不调用的方法等,并再次减小二进制文件的大小。
字符串加密会对运行时性能产生轻微影响,因为必须在运行时将字符串转换回人类可读的文本。
如果您使用Microsoft SLP的安全虚拟机技术等任何其他系统/技术来呈现不可读的方法,这些方法也会因安全虚拟机而导致运行时性能下降。
其他混淆工具不会将托管代码程序集作为输出生成,而是依赖于本机代码加载器来“预处理”它们的输出,这也会导致运行时性能损失(特别是在加载时)。
答案 1 :(得分:5)
混淆不应更改代码的运行时性能。如果它是那么你有一个糟糕的混淆器,它做的不仅仅是混淆。所有混淆应该是让你的IL难以阅读。
答案 2 :(得分:2)
工具可以使用different obfuscation methods。有一些简单的重命名方法不应该以任何方式影响性能。其他方法可能会改变代码的流程。这可能会对绩效产生负面影响。您可能想要查看其他混淆器并尝试不同的设置。