Zelix KlassMaster - Documentation

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 23 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_421" Java HotSpot(TM) 64-Bit Server VM (build 25.421-b09, mixed mode)
    • IBM Semeru Runtime Open Edition (build 1.8.0_422-b05) Eclipse OpenJ9 VM (build openj9-0.46.1, amd64-64-Bit Compressed References 20240909_1048 (JIT enabled, AOT enabled))
    • java version "11.0.24" 2024-07-16 LTS Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.24+7-LTS-271, mixed mode)
    • java version "17.0.12" 2024-07-16 LTS Java HotSpot(TM) 64-Bit Server VM (build 17.0.12+8-LTS-286, mixed mode, sharing)
    • IBM Semeru Runtime Open Edition 17.0.12.1 (build 17.0.12+7) Eclipse OpenJ9 VM 17.0.12.1 (build openj9-0.46.1, amd64-64-Bit Compressed References 20240716_793 (JIT enabled, AOT enabled))
    • java version "21.0.4" 2024-07-16 LTS Java HotSpot(TM) 64-Bit Server VM (build 21.0.4+8-LTS-274, mixed mode, sharing)
    • openjdk version "21.0.4" 2024-07-16 LTS Temurin-21.0.4+7 OpenJDK 64-Bit Server VM Temurin-21.0.4+7 (build 21.0.4+7-LTS, mixed mode)
    • IBM Semeru Runtime Open Edition 21.0.4.1 (build 21.0.4+7-LTS) Eclipse OpenJ9 VM 21.0.4.1 (build openj9-0.46.1,amd64-64-Bit Compressed References 20240716_260 (JIT enabled, AOT enabled))
    • java version "23" 2024-09-17 Java HotSpot(TM) 64-Bit Server VM (build 23+37-2369, mixed mode, sharing)
    • openjdk version "23" 2024-09-17 Temurin-23+37 (build 23+37) OpenJDK 64-Bit Server VM Temurin-23+37 (build 23+37, mixed mode))
    • IBM Semeru Runtime Open Edition 23.0.0.0 (build 23+37) Eclipse OpenJ9 VM 23.0.0.0 (build openj9-0.47.0, amd64-64-Bit Compressed References 20240917_41 (JIT enabled, AOT enabled))
    • IBM Semeru Runtime Open Edition 21.0.2.0 (build 21.0.2+13-LTS) Eclipse OpenJ9 VM 21.0.2.0 (build openj9-0.43.0, amd64-64-Bit 20240116_95 (JIT enabled, AOT enabled)
  • Linux (Xubuntu 22.04) using
    • java version "1.8.0_421" (build 1.8.0_421-b09)Java HotSpot(TM) 64-Bit Server VM (build 25.421-b09, mixed mode)
    • openjdk version "1.8.0_422" (Temurin)(build 1.8.0_422-b05) OpenJDK 64-Bit Server VM (Temurin)(build 25.422-b05, mixed mode)
    • IBM Semeru Runtime Open Edition (build 1.8.0_422-b05) Eclipse OpenJ9 VM (build openj9-0.46.1, amd64-64-Bit Compressed References 20240909_1031 (JIT enabled, AOT enabled))
    • java version "11.0.24" 2024-07-16 LTS (build 11.0.24+7-LTS-271) Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.24+7-LTS-271, mixed mode)
    • java version "17.0.12" 2024-07-16 LTS (build 17.0.12+8-LTS-286) Java HotSpot(TM) 64-Bit Server VM (build 17.0.12+8-LTS-286, mixed mode, sharing)
    • openjdk version "17.0.12" 2024-07-16 Temurin-17.0.12+7 (build 17.0.12+7) OpenJDK 64-Bit Server VM Temurin-17.0.12+7 (build 17.0.12+7, mixed mode, sharing)
    • IBM Semeru Runtime Open Edition 17.0.12.1 (build 17.0.12+7) Eclipse OpenJ9 VM 17.0.12.1 (build openj9-0.46.1, amd64-64-Bit Compressed References 20240716_840 (JIT enabled, AOT enabled))
    • java version "21.0.4" 2024-07-16 LTS build 21.0.4+8-LTS-274) Java HotSpot(TM) 64-Bit Server VM (build 21.0.4+8-LTS-274, mixed mode, sharing)
    • openjdk version "21.0.4" 2024-07-16 LTS Temurin-21.0.4+7 (build 21.0.4+7-LTS) OpenJDK 64-Bit Server VM Temurin-21.0.4+7 (build 21.0.4+7-LTS, mixed mode, sharing)
    • IBM Semeru Runtime Open Edition 21.0.4.1 (build 21.0.4+7-LTS) Eclipse OpenJ9 VM 21.0.4.1 (build openj9-0.46.1, amd64-64-Bit Compressed References 20240716_264 (JIT enabled, AOT enabled))
    • java version "23" 2024-09-17 (build 23+37-2369) Java HotSpot(TM) 64-Bit Server VM (build 23+37-2369, mixed mode, sharing)
    • openjdk version "23" 2024-09-17 Temurin-23+37 (build 23+37) OpenJDK 64-Bit Server VM Temurin-23+37 (build 23+37, mixed mode, sharing)
    • IBM Semeru Runtime Open Edition 23.0.0.0 (build 23+37) Eclipse OpenJ9 VM 23.0.0.0 (build openj9-0.47.0, amd64-64-Bit Compressed References 20240917_35 (JIT enabled, AOT enabled)>
  • MacOS (Monterey 12.7.6) using
    • java version "1.8.0_421" (build 1.8.0_421-b09)Java HotSpot(TM) 64-Bit Server VM (build 25.421-b09, mixed mode)
    • java version "17.0.12" 2024-07-16 LTS (build 17.0.12+8-LTS-286) Java HotSpot(TM) 64-Bit Server VM (build 17.0.12+8-LTS-286, mixed mode, sharing)
    • java version "21.0.4" 2024-07-16 LTS build 21.0.4+8-LTS-274) Java HotSpot(TM) 64-Bit Server VM (build 21.0.4+8-LTS-274, mixed mode, sharing)
    • java version "23" 2024-09-17 (build 23+37-2369) Java HotSpot(TM) 64-Bit Server VM (build 23+37-2369, mixed mode, sharing)
    • IBM Semeru Runtime Open Edition 23.0.0.0 (build 23+37) Eclipse OpenJ9 VM 23.0.0.0 (build openj9-0.47.0, amd64-64-Bit Compressed References 20240917_36 (JIT enabled, AOT enabled))

What can Zelix KlassMaster™ process?

Zelix KlassMaster™ can process bytecode compiled for Java 9 through to 23 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 23 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.
 
Documentation Table of Contents
Zelix KlassMaster - Java Obfuscator