A tool that mangles source code into a human-unreadable form without changing its function.
Possible applications:
A major problem with obfuscation is that stack dumps generated when errors occur are meaningless. Some obfuscators provide (to the code author) a utility that allows the obfuscated names to be mapped back into the real names for this purpose.
The OpenSourceInitiative? definition of OpenSource specifically excludes any project whose source code has been obfuscated.
I once wrote a "variable substituter" that replaced meaningful variables and function names with hard-to-remember names.
Before:
result = countMessages(criteriaArray)After:
ruwsgfk = kjwtpd(bjkjwwvc)It had an optional "leave it alone" list for items that were not substituted, usually for external interface reasons.
Professional obfuscators for .NET and Java are available from http://www.preemptive.com . Semantic Designs provides an entire family of obfuscators for a wide variety of languages. See http://www.semanticdesigns.com/Products/Obfuscators
If you want to obfuscate your code, just use OOP :-) (CategoryJoke, really)
Open Source Obfuscators for Java: http://java-source.net/open-source/obfuscators