Zelix KlassMaster - Documentation

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.


Once your classes are open, you may obfuscate them at any time by selecting the Tools | Obfuscate menu. The obfuscation dialog consists of two or three windows depending upon the options which you select.
Zelix KlassMaster - Selecting Tools Obfuscate

Documentation Table of Contents