有很多针对.Net的混淆程序,我试过一个,我的exe在混淆时似乎要慢得多.所有的混淆程序都有相同的效果,还是我选择了一个不好的程序?我希望有些人比其他人好,如果你知道一个快速让我知道.
免责声明:我的雇主是PreEmptive Solutions,Dotfuscator .NET混淆器的创建者.
它可能取决于您使用的混淆器以及您在其中启用的选项.我将从Dotfuscator的经验谈谈.
如果使用重命名和删除,可能会有混淆程序集的加载时间和内存占用量改进,部分原因是所有/大多数方法,字段等都重命名为更小的名称(例如"ThisVeryLongMethodName(SomeVeryLongParameterName)"变为"a( a)"这样你就可以获得装配尺寸和装载时间的一些好处.除了删除之外你还可以删除从不调用的方法等,并再次减小二进制文件的大小.
字符串加密可以在很小程度上对运行时性能产生负面影响,因为字符串必须在运行时转换回人类可读的文本.
如果您使用任何其他系统/技术(如Microsoft SLP的安全虚拟机技术)来呈现不可读的方法,这也会因安全虚拟机而导致运行时性能下降.
不产生托管代码组件的输出,而是依靠本地代码加载到"预处理"它们的输出也可以承担一个运行时的性能损失(尤其是在加载时)其它混淆工具.
混淆不应该改变代码的运行时性能.如果它是那么你有一个糟糕的混淆器,它做的不仅仅是混淆.所有混淆都应该让你的IL难以阅读.