Ich versuche, den {smartassembly} .NET Obfuscator mit meinem System zu verwenden. Derzeit speichere ich Benutzerdaten in einer Reihe von serialisierten Wörterbuchklassen und deserialisiere diese Klassen dann, um die Daten zurückzubekommen. Ich ignoriere bereits die Versionsinformationen der Assemblies, einfach weil das Leben auf diese Weise sehr mühsam ist. Dieser Code ist angepasst von 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;
}
}
Das Problem ist nun, dass meine verschleierte Anwendung die Versionsinformationen ignoriert, aber die von der nicht-verschleierten Anwendung gespeicherten Daten nicht lesen kann und andersherum. Wir müssen eine nicht-verschleierte Version haben, um die Anwendung zu debuggen, so dass dies ein ziemlich großer Showstopper für uns ist. Gibt es eine Möglichkeit, dieses Problem zu umgehen? Sollte ich die Datenklassen einfach nicht verschleiern? Das scheint eine ziemlich große Sicherheitslücke zu sein.