Tools | Obfuscate
Java class (bytecode) files can be decompiled back to Java source code.
There is little you can do to your bytecode to prevent this.
However, Zelix KlassMaster can obfuscate your bytecode so that the source code produced by a decompiler
is much less readable. As a side effect, obfuscation can reduce the size of your bytecode so your classes
can move across networks more quickly.
Zelix KlassMaster has the following obfuscation features:
- it provides name obfuscation of your packages, classes, fields and methods,
- it provides flow obfuscation that
changes most selection (eg. if...else) and loop (eg. while and for) constructs so that they have no direct Java
language equivalent.
- it can encrypt your String literals to make decompiled source code less readable.
- it can collapse your package structure to reduce overall bytecode size,
- it has sophisticated yet easy to use Name Exclusion functionality that gives you fine control
over which names are obfuscated.
- it can retain scrambled line numbers in your bytecode so that beta test errors can be easily diagnosed
without giving decompilers any extra information.
- it can produce a detailed Change Log recording all name changes and provides a
Stack Trace Translation tool to help you interpret it.
- it can take an existing Change Log as input so that you get consistent renaming and flow obfuscation across releases.
This is important if you use RMI and serialization or if you wish to distribute only the changed subset of your application in the form of
a patch.
- it handles RMI, JavaBeans, EJB 1 and EJB 3 (if implemented using annotations) by default.
Note that the ability to exclude specific methods from flow obfuscation is available only through
the ZKM Script interface.
The obfuscation tool works on all open classes. It cannot obfuscate classes that have not been opened.
So you should open your application as a whole so that all references between classes can be updated appropriately.
|