Tu jest lista programów do zaciemniania kodu .NET
http://www.csharp411.com/net-obfuscators/
Ja ćwiczyłem z tym
https://code.google.com/p/obfuscar/
i sprawdzałem programem DotPeek 1.2
Zaciemnianie robi się na wynikowych plikach exe albo dll, zmianie ulegają nazwy klas, metod, przestrzenie nazw, nazwy użytych wizualnych kontrolek. Mają jakieś jednoliterowe nazwy. Pewnie po czymś takim nawet hakerowi będzie naprawdę ciężko dojść co do czego a im bardziej skomplikowany i rozbudowany projekt to tym bardziej.
Generalnie chodzi o zaciemnienie kodu w ten sposób, żeby haker nie doszedł do tego co jest odpowiedzialne za aktywację i w jaki sposób to się dzieje. Można też dokonać zaciemnienia samego kodu i jego ponowną kompilację.