A tool that mangles source code into a human-unreadable form without changing its function.
Possible applications:
- Source code is a contracted deliverable and customer relationship has soured.
- Makes an interesting input to a peer review ... "Well, it compiles.
- Intermediate code language (.NET or Java) contains intellectual property.
Especially useful when the
CodeObfuscator produces a key and is combined with a deobfuscation tool.
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