Şunu asla unutmayın dotnet pahalı bir ortamdır. Bu yüzden kimse net bilgisini paylaşmaz,
net için yazdığı sınıf ve kütüphaneleri bedava vermez, hatta bilgilerini bile vermez. Zaten dotnet' in diğer diller gibi çok yaygın olmamasının sebebi kaynağının kısıtlı oluşu ve gerçek bilginin paylaşılmamasıdır. Bu size linkini verdiğim dotfuscator en ucuz ve fiyatına göre en iyisidir. Unutmayınki lisansı 7-8 bin usd olan dotfuscator bulunmaktadır.
Gel gelelelim sorunuza öncelikle msil (Microsoft Common Intermediate Language) yapısı itibarı ile dissamble edildikten sonra düz text olarak kodlarınızın çıkacağını bilmelisiniz.. Msil mimarisini bilen birisi, ek bir decompilera (reflector tarzı) gerek kalmadan, herhangi bir dotfuscator aracıyla compiler edilmemiş projenizi rahatlıkla çözebilir. Buradacompiler edildikten sonraki projenizin(Örnek: App_Web_dosyaismi.aspx.cdcabXX.dll ) hiç bir önemi yoktur. Herşey projenizi dissamble etmek isteyen kişinin Microsoft Common Intermediate Language bilgisine bağlıdır.
Örnek olarak projeniz aşağıdaki gibi olsun,
Projeniz;
int i = 1;
if(i!=2)
i = i*2;
Console.WriteLine(i);
Bu projeyi compiler edip herhangi bir dissamble aracıyla çözdüğünüz zaman kodlarınız aşağıdaki şekile döner;
IL_0000: ldc.i4.s 1
IL_0002: stloc.0
IL_0003: ldloc.0
IL_0004: ldc.i4.s 2
IL_0006: beq.s IL_000d
IL_0008: ldloc.0
IL_0009: ldc.i4.s 2
IL_000b: mul
IL_000c: stloc.0
IL_000d: ldloc.0
IL_000e: call void [mscorlib]System.Console::WriteLine(int32)
Msil mimarisini bilen bir kişi, yukarıda dissamble edilmiş kodu her türlü çözer ve mantığına bakıp programı baştan yazar. Dotfuscator tarzı bir program kullanırsanız dissamble edilmiş kod da kendi içerisinde karıştırılacak, kodun içerisinde bulunan komutlar ve string / integer veriler tamamen şifrelenecektir. Tabiönceki yazdığım mesajda belirttiğim gibi her karıştırıcı string/integer bilgileri şifrelemez.
Burada bilmeniz gereken, Msil' in projeyi yazdığınız dil, ortam vs ile alakası yoktur. Çünkü vs.net de compiler ettiğiniz projeniz / websiteniz compiler esnasında msil e çevrilir. Ortada projenizi geliştirdiğiniz dil in önemi kalmamıştır. Bunu biraz daha genişletecek olursak hatta web projeniz compiler edilmese dahi ilk çalışma esnasında sunucu tarafında compiler edilir ve yine web sitenizi geliştirdiğiniz dilin(vb.net, c#, j#, ironyython vs) bir önemi yoktur...
Bu arada not: Bir gün program yazıp para kazanmak istiyorsanız, kesinlikle kırılmış program aramayın/ kullanmayın. Onların yerine kendinizi koyun...