Sistemim ile çalışmak için {smartassembly} .NET obfuscator'ı almaya çalışıyorum. Şu anda kullanıcı verilerini bir dizi serileştirilmiş sözlük sınıfında saklıyorum ve daha sonra verileri geri almak için bu sınıfları deserialize ediyorum. Montaj versiyonu bilgisini zaten görmezden geliyorum, çünkü bu şekilde hayatı acıtıyor. Bu kod adapted from MSDN geçerli:Saptırılmış ve hata ayıklama yapıları arasında seri hale getirme uyumluluğunu nasıl koruyabilirim?
//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;
}
}
Sorun şimdi benim Karartılmış uygulaması tersi bilgiyi sürüm göz ardı eder, fakat olmayan Karartılmış uygulama tarafından kaydedilen verileri okuyamaz ve vardır. Uygulamanın hatalarını ayıklamak için gizlenmemiş bir versiyona ihtiyacımız olacak, bu bizim için oldukça büyük bir showtopper. Bu problemi aşmanın bir yolu var mı? Veri sınıflarını karıştırmamalı mıyım? Bu oldukça büyük bir güvenlik deliği gibi görünüyor.
ben Bir dongle çalışması yapmak için dikkat çekmek gerekir, çünkü gizleme olmadan, dongle aramaları kaldırmak kolay olacaktır. – mmr
Newsflash: gizleme ile bile dongle çağrılarını kaldırmak çok kolay olacak. – MichaelGG
Belki de, uygulamaya özel şeyler ile bile dongle'a gideceğiz.Bu özel bir hacker durdurmak için değil, anahtarı kaldıran ve yazılımı kullanmaya devam edebilirsiniz avara durdurmak anlamına geliyordu. – mmr