我如何安全地使用混淆器?

Zah*_*haq 3 .net c# obfuscation dotfuscator

当我尝试在我的应用程序上使用dotfuscate时,运行时出现应用程序错误.

Ree*_*sey 10

Dotfuscator(以及所有混淆器)通常可以安全地在应用程序上运行,但它们偶尔会导致问题.如果没有问题的具体细节,就很难诊断出来.

但是,混淆器的一个常见问题是当它们与反射混合时.由于您要更改类型名称而不是字符串,因此每次尝试反映具有特定字符串名称的对象,并使用反射命名空间构造对象时,您可能会遇到问题.


Gre*_*ean 9

我在混淆中遇到的大多数问题都围绕着无法更改其名称的类型,因为需要反映它们(您的代码或运行时).

例如,如果您有一个用作Web服务代理的类,则无法安全地模糊类名:

public class MyWebServiceProxy : SoapHttpClientProtocol
{

}
Run Code Online (Sandbox Code Playgroud)

此外,一些混淆器无法处理泛型方法和类.

诀窍是你需要找到这些类型并防止obfuscater重命名它们.这是通过Obfuscation属性完成的:

[global::System.Reflection.Obfuscation(Exclude=true, Feature="renaming")]
Run Code Online (Sandbox Code Playgroud)