Programs written for .NET are easy to reverse engineer. .NET uses expressive file syntax for delivery of executable code, or MSIL (Microsoft Intermediate Language). Being higher-level than binary machine code, the intermediate files are laden with identifiers and algorithms that are immediately observable and ultimately understandable.
Attackers can use a .NET decompiler to easily reverse engineer code, exposing software licensing code, copy protection mechanisms, and proprietary business logic are much more available for all to see - whether it's legal or not. Anyone can peruse the details of a software application for security flaws to exploit, unique ideas to steal, crack, programs to crack, or worse.
This need not be a risk or a showstopper. Organizations concerned with their intellectual property on the .NET platform need to know there is a solution to thwart reverse engineering. Obfuscation is a technique that provides seamless renaming of symbols in assemblies as well as other tricks to foil decompilers. Properly applied obfuscation increases protection against decompilation by orders of magnitude, while leaving the application intact.