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