1.1. Definition of Obfuscation
Obfuscated code is a code that is (usually intentionally) very hard to read and understand. Some programming languages and technologies are more prone to obfuscation than others.
There are also programs known as obfuscators that may operate on source code, object code, or both, for the purpose of deterring reverse engineering.
Obfuscating code to prevent reverse engineering is typically done to manage risks that stem from unauthorized access to source code. These risks include loss of intellectual property, ease of probing for application vulnerabilities and loss of revenue that can result when applications are reverse engineered, modified to circumvent metering or usage control and then recompiled. Obfuscating code is, therefore, also a compensating control to manage these risks. The risk is greater in computing environments such as Java and Microsoft's .NET which take advantage of "Just-in-Time" (JIT) compilation technology that allow developers to deploy an application as intermediate code rather than code which has been compiled into native machine language before being deployed. [WikiObCode]
Eazfuscator.NET is an obfuscator that operates on .NET object code entitled as CIL.