Compatibility
What do you need to run Zelix KlassMaster?
Zelix KlassMaster is written entirely in Java 8 (i.e. JDK 1.8) and technically should run on any platform that supports a Java 8 or better Virtual Machine.
However, note that Zelix KlassMaster version 10 or better requires a recent version of a Java 8 JVM or better to run. If you use an Oracle JVM earlier than 1.8.0_152 then you may get a JVM crash due to HotSpot bugs.
Also note that Zelix KlassMaster version 27 currently may not run successfully on older versions (e.g. pre-Aug 2020) of the Eclipse OpenJ9 JVM due to a JVM bug.
More generally, differences in the file systems and GUIs can also cause problems. Further, Zelix KlassMaster's flow obfuscation technology can expose bugs in some Just in Time (JIT) compilers.
Zelix KlassMaster has been tested on:
- Windows 11 64bit using
- java version "1.8.0_503" Java HotSpot(TM) 64-Bit Server VM (build 25.503-b01, mixed mode)
- openjdk version "1.8.0_504" OpenJDK 64-Bit Server VM (Temurin)(build 25.504-b01, mixed mode)
- java version "11.0.32.1" 2026-08-18 LTS Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.32.1+1-LTS-5, mixed mode)
- java version "11.0.32.1" 2026-08-18 LTS Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.32.1+1-LTS-5, mixed mode)
- java version "17.0.20.1" 2026-08-18 LTS Java HotSpot(TM) 64-Bit Server VM (build 17.0.20.1+1-LTS-4, mixed mode, sharing)
- java version "21.0.12.1" 2026-08-18 LTS Java HotSpot(TM) 64-Bit Server VM (build 21.0.12.1+1-LTS-4, mixed mode, sharing)
- java version "25.0.4.1" 2026-08-18 LTS Java HotSpot(TM) 64-Bit Server VM (build 25.0.4.1+1-LTS-5, mixed mode, sharing)
- openjdk version "25.0.4.1" 2026-08-18 LTS OpenJDK 64-Bit Server VM Temurin-25.0.4.1+1 (build 25.0.4.1+1-LTS, mixed mode, sharing)
- java version "26.0.2.1" 2026-08-18 Java HotSpot(TM) 64-Bit Server VM (build 26.0.2.1+1-7, mixed mode, sharing)
- openjdk version "26.0.2.1" 2026-08-18 OpenJDK 64-Bit Server VM Temurin-26.0.2.1+1 (build 26.0.2.1+1, mixed mode, sharing)
- openjdk version "27" 2026-09-15 OpenJDK 64-Bit Server VM (build 27+35-2325, mixed mode, sharing)
- Linux (Xubuntu 22.04) using
- java version "1.8.0_503" Java HotSpot(TM) 64-Bit Server VM (build 25.503-b01, mixed mode)
- java version "11.0.32.1" 2026-08-18 LTS Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.32.1+1-LTS-5, mixed mode)
- java version "17.0.20.1" 2026-08-18 LTS Java HotSpot(TM) 64-Bit Server VM (build 17.0.20.1+1-LTS-4, mixed mode, sharing)
- java version "26.0.2.1" 2026-08-18 Java HotSpot(TM) 64-Bit Server VM (build 26.0.2.1+1-7, mixed mode, sharing)
- openjdk version "27" 2026-09-15 OpenJDK 64-Bit Server VM (build 27+35-2325, mixed mode, sharing)
- MacOS (Tahoe 26.6.2) using
- java version "1.8.0_503" Java HotSpot(TM) 64-Bit Server VM (build 25.503-b01, mixed mode)
- java version "11.0.32.1" 2026-08-18 LTS Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.32.1+1-LTS-5, mixed mode)
- java version "17.0.20.1" 2026-08-18 LTS Java HotSpot(TM) 64-Bit Server VM (build 17.0.20.1+1-LTS-4, mixed mode, sharing)
- java version "21.0.12.1" 2026-08-18 LTS Java HotSpot(TM) 64-Bit Server VM (build 21.0.12.1+1-LTS-4, mixed mode, sharing)
- java version "25.0.4.1" 2026-08-18 LTS Java HotSpot(TM) 64-Bit Server VM (build 25.0.4.1+1-LTS-5, mixed mode, sharing)
- java version "26.0.2.1" 2026-08-18 Java HotSpot(TM) 64-Bit Server VM (build 26.0.2.1+1-7, mixed mode, sharing)
- openjdk version "27" 2026-09-15 OpenJDK 64-Bit Server VM (build 27+35-2325, mixed mode, sharing)
However, Zelix KlassMaster 27 will not reliably run on IBM Semeru Runtimes that make use of the Eclipse OpenJ9 VM due to a suspected JIT compiler bug.
If you use such a IBM Semeru Runtime then Zelix KlassMaster may throw an exception or the JVM may crash.
Alternatively the obfuscated software produced may throw an exception or crash the JVM.
This can be worked around by using the -Xint JVM command line option but at the cost of a dramatic loss of performance.
The suspected JIT compiler bug has been reported to IBM.
What can Zelix KlassMaster process?
Zelix KlassMaster can process bytecode compiled for Java 9 through to 27 including modules.
Of course, it can also process bytecode compiled for JDK 1.1.x, 1.2.x, 1.3.x, 1.4.x, 1.5.0, 1.6.0, 1.7.0 and 1.8.0 JVMs.
However, it is highly recommended that you always set the internal classpath used by Zelix KlassMaster
(i.e. the ZKM Script classpath statement) to point to the bootstrap classes corresponding to the classes you are obfuscating.
For Java 2 through to Java 8 that is the corresponding rt.jar. For Java 9 to Java 27 it is the corresponding lib\jrt-fs.jar file system.
Note that if you use the Reference Obfuscation functionality on bytecode which is at the Java 8 level
then your obfuscated bytecode will require a newer Java 8 or better JVM to run.
For example, if you use an Oracle JVM earlier than 1.8.0_152 then you may get a JVM crash due to HotSpot bugs.
|