Obfuscate def. To make so confused or opaque so as to be difficult to perceive or understand: "A great effort was made to obscure or obfuscate the truth." (Robert Conquest)
An Obfuscator is an entity that makes some object difficult to perceive or understand. JCloak is such an "entity" in that it renders your Java bytecode difficult or impossible to understand.
Why would I Need an Obfuscator?
You need an obfuscator like JCloak to protect your applets from being reverse engineered. You also need it to protect the algorithms in your libraries from being copied. Like some customers, you may be required to use JCloak by the US Department of State and the National Security Agency in order to be granted export licenses for your products.
We use JCloak at Force 5 Software to protect itself. If you care about your intellectual property, you need JCloak.
JCloak determines the complete set of symbol references made by your applet. It then generates a new unique and unintelligible name for each symbol name. JCloak operates on each bytecode instruction in your class file, replacing the original symbol names with the generated ones, so as to render the class files unintelligible to any decompiler.
Customers who register and license JCloak are entitled to free product support for one year from the date of purchase. The customer is entitled to all maintenance releases of JCloak free of charge. Upgrade programs will be available at a significant discount to existing customers for any major release of JCloak.
To submit a bug report, email firstname.lastname@example.org. Include all console output from JCloak and any relevant class files.
Yes, JCloak generates a standard class file as defined by the Java Virtual Machine specification. Byte code generated by JCloak will run on any JVM. Furthermore, JCloak is the first Java bytecode obfuscator to be certified "100% Pure Java".
JCloak operates across all the classes in your applet. JCloak doesn't just obfuscate private members, it also obfuscates any member that is not referenced by a class outside of your applet. JCloak uses a unique method of separating and analyzing the classes referenced by your application, library or applet to determine what is safe to obfuscate, which is accomplished by reading and processing the actual bytecode instructions. In addition, JCloak supports custom control of what classes, fields and methods are obfuscated, including full support for advanced JDK 1.1 features such as RMI, reflection and serialization.
JCloak offers all this, and expert support without a significant markup in price.
Yes. JCloak was the first Java obfuscator to support Java 2. JCloak V3 generates bytecode that is compatible with Java 1.0, 1.1 and Java 2. JCloak provides the most complete support for Java 2 including:
Yes. with JDK 1.1, Javasoft made minor changes to the class files to support inner classes. JCloak will safely obfuscate inner classes along with any other classes. JCloak detects compiler-generated or 'synthetic' fields and uses of the new reflection API, and automatically excludes the reflected classes from obfuscation.
JCloak can support JavaBeans by being instructed to exclude methods and classes matching the design patterns specified in the Java Beans 1.01 API specification. In addition, custom patterns can be specified to accommodate Beans that support introspection via a BeanInfo derived class.