What is an obfuscator?
Obfuscation is the technology of shrouding the facts. It's not
encryption, but in the context of .NET (or java) code, it might be
better. Encryption for programs suffers from a classic flaw, it needs
to keep the decryption-key with the encrypted data. Therefore, an
automated utility could be created to decrypt the code and put it out
to disk. Once that happens the fully unencrypted, unobfuscated code is
in plain view.
Obfuscation is a technique that provides for seamless renaming of
symbols in assemblies as well as other tricks to foil decompilers.
Properly applied obfuscation can increase the protection against
decompilation by many orders of magnitude, while leaving the
application intact.
Without argument, obfuscation (or even encryption) is not 100 percent
protection. Even compiled C++ is disassembleable. If a hacker is
perseverant enough, they can find the meaning of your code. The goal
of obfuscation is to make the reverse engineering process extremely
time consuming and painful so that it not worth the effort. The goal
became to stop all casual hackers and as many serious hackers as
possible.
Also, since obfuscation indicates that the IP owner has taken measures
to secure the IP obfuscating your .NET Program may provide you with
more legal options in the event it is required.