{smartassembly} .NET 難読化ツールを自分のシステムで動作させようとしています。現在、一連のシリアル化された辞書クラスにユーザー データを格納し、それらのクラスを逆シリアル化してデータを取得しています。私はすでにアセンブリのバージョン情報を無視しています。その方法が面倒だからです。そのコードはMSDN から改作されています:
//to avoid cross-versioning problems
public sealed class CrossVersionDeserializationBinder : SerializationBinder {
public override Type BindToType(string assemblyName, string typeName) {
Type typeToDeserialize = null;
typeToDeserialize = Type.GetType(String.Format("{0}, {1}",
typeName, assemblyName));
return typeToDeserialize;
}
}
問題は、難読化されたアプリがバージョン管理情報を無視するようになりましたが、難読化されていないアプリによって保存されたデータを読み取ることができず、その逆も同様です。アプリケーションをデバッグするには、難読化されていないバージョンが必要になるため、これは私たちにとって非常に大きな問題です。この問題を回避する方法はありますか? データクラスを難読化するべきではありませんか? これはかなり大きなセキュリティ ホールのようです。