A Safer Journey for
Java Applications
Guenther Fischer
Senior Consultant, Licensing and Protection
Dr. Simon Kunz
Java Security Expert
AxProtector Java
Agenda
 Overview of Java
 Introduction: Security and protection technologies for Java
 AxProtector Java
 Current security mechanisms
 Java 9 support
©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications 2
Overview of Java
©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications 3
Java and the JVM/JRE
 Java: Programming language developed by Sun in 1995
 The JVM is an abstract machine
 The instruction set is called Java Byte Code
 Compiled Java programs consist of many class files that contain Byte Code (not
native code)
 JARS are ZIP archives with an additional manifest
 Byte Code is interpreted and executed by Java Virtual Machine (JVM) at runtime
 Byte Code is easy to reverse engineer
 Classes are always loaded as a whole by the JVM
©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications 4
Java – Write Once, Run Anywhere (WORA)
©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications
Java Program (.java)
Interpreter (JVM)
Java Compiler
JAVAC
Java Byte Code (.class /.jar)
Windows
Interpreter (JVM)
Linux
Interpreter (JVM)
macOS
…
5
Java Architecture
©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications
Classloader
Java Program
*.class Files
Bytec Code Verifier
Interpreter (JVM)
Host Operating System
(Windows, Linux, macOS,..)
Java API
*.class Files
6
Java Byte Code / Native Code Combination
©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications
Java Runtime
(Java)
Java Virtual Machine
(Native Code)
JNI
(Native Code)
C/C++ can be used with JNI (Java Native Interface)
7
Introduction: Security and
Protection Technologies for Java
©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications 8
Java and Security
 Java classes are:
 Easy to extract
 Easy to replace (even system classes)
 Easy to modify
 The Java Byte Code is not a “secret”
 Fact!
 Everything written in Java is usually unsecure!
©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications 9
Protection Goals
 Protection against piracy (licensing)
 IP protection against reverse engineering
 Protection against industrial espionage
 Protection against code exploitation
 Integrity protection of data and code
 Protection of sensitive product data (competitive advantage)
©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications 10
The Arsenal of Cyber-Attackers (Java Decompiler .jar/.class -> .java)
©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications 11
Multiple Sources of Information
©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications 12
Possible Options
 Obfuscation
 Java2Exe (JET Engine) or Exe4j
 Translation into native code
 Possible other encryption methods with native tools
 Encrypting Java Byte Code
 Other methods
 Example with CodeMeter Core API
©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications 13
Java Obfuscation Tools (ClassMaster/Allatori/ProGuard….)
©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications 14
Java Obfuscation Tools (ClassMaster/Allatori/ProGuard….)
©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications
Java2Exe/JAR2EXE
 Excelsior JET Engine/Regex Jar2Exe
15
Principle of Java2Exe/Jar2Exe/Exe4J
©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications
JavaCode
JavaByteCode
NativerCode
JAVAC
Compiler
Excelsior
JET
Compiler
Exe4J
Compiler
16
Additional Encryption-based Protection
©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications
JavaCode
JavaByteCode
NativerCode
Encrypted
NativeCode
JAVAC
Compiler
Excelsior
JET
Compiler
AxProtector
Native
Exe4J
Compiler
17
Current Security Mechanisms of
AxProtector Java
©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications 18
Encryption
©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications
 Encryption of the executable code before delivery
 Decryption of required classes / methods at runtime in memory
Encryption
Unprotected
Application
Decryption
AxEngine
AxEngine
19
Unencrypted Code (CAFEBABE)
©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications
Magic Number Version
Constant Pool
Access Flag
this Class
super Class
Interfaces
Fields
Methods
Attributes
20
Code Protected with AxProtector Java
©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications
Magic Number Version
Constant Pool
Access Flag
this Class
super Class
Interfaces
Fields
Methods
Attributes
21
AxProtector Java
 AxProtector Java
 Java 1.6
 Java 1.7
 Java 1.8
 Java 9
 Java Applications
 Java Applets
 Java Servlets
©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications 22
AxProtector Java – Operational Principles
 AxProtector Java automatic protection mechanisms at class / method level encrypt the Byte Code
 Flexible licensing options
 Each class is automatically decrypted while loading. For this, you need to initiatize AxProtector Runtime:
 Java applications with main class => Automatically replaced by wrappers (com.wibu.xpm.Wrapper)
 manual loading by EntryPoint
©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications 23
Encryption at Class or Method Level
Encryption at class level
The class is encrypted as a whole
The class is completely loaded and decrypted when used
©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications
class
Method 1
Method 2
Method 3
AxProtector
class
Method 1
Method 2
Method 3
24
Encryption at Class or Method Level
Encryption at method level
Methods are extracted as new classes
Methods are loaded and decrypted only when used
Different license lists for individual methods (IxProtector) are possible
©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications
class
Ref 1
Ref 2
Ref 3
class
Method 1
class
Method 2
class
Method 3
referenced
class
Method 1
Method 2
Method 3
25
Encryption at Class or Method Level
Encryption at class and method level
©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications
class
Ref 1
Ref 2
Ref 3
class
Method 1
class
Method 2
class
Method 3
referenced
class
Method 1
Method 2
Method 3
Example: Basic License Feature-based License
26
The Three Types of Encryption Configuration
 Annotations in source code
 AxProtector GUI
 xml configuration file
©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications 27
Annotations in Source Code
 @Protected (licenseList=0)
 @Unprotected
 @EntryPoint
©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications 28
AxProtector GUI
©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications 29
xml – Configuration File
©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications 30
Traps in a Java Application
 If a class or method defined as a trap is decrypted, the license is locked:
Firm Access Counter  0
 Inserting traps automatically or manually
©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications 31
Traps in a Java Application
Manual insertion using annotations:
©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications
class
Ref 1
Ref 2
Ref 3
class
Method 1
class
Method 2
class
Method 3
referenced
class
Method 1
Method 2
Method 3
trap
@Trap
private static void Method3() {
}
32
Sample referencing:
if (tax > 100%) {
Method3()
}
Traps in a Java Application
Automatic insertion using the command line option
©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications
Example: Option
-trap1:70
adds to approx. 70% of the encrypted methods traps class
Ref 1
Ref 2
Ref 3
class
Method 1
class
Method 2
class
Method 3
class
Method 1
Method 2
Method 3
Ref 4
class
Method 4
AxProtector summary output:
33
Encryption of the Constant Pool (Option –caa1)
 Constant entries in the constant pool related to the data types of the string, int and long remain encrypted all the way
through
 Decryption is done as needed
Clear text:
 Keys change dynamically
©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications
String a = “Hello World!”;
String a = “ut3ilspNQ”;
a = decrypt(a);
Native Function Call
Byte Code
Constant Pool
Java Class
34
Encryption of the Method Control Flow (Option –caa2)
©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications
class
Ref 1
Ref 2
Ref 3
class
XYZ
class
YZF
class
LQZ
class
Method 1
Method 2
Method 3
Encrypts the references to the extracted methods
Program flow can no longer be read
35
Obfuscation of Names
 Applicable to:
• Classes
• Methods
• Fields
• Packages
• Local Variables
 Individually controllable for classes and methods
 Applicable to encrypted and unencrypted classes / methods
©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications
Example:
36
Obfuscation of Individual Names with AxProtector GUI
©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications
Example:
37
Integrity Verification
 Protection against tampering .class files
 Individually applicable for classes and methods
 Applicable to encrypted and unencrypted
classes / methods
©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications 38
CodeMoving
 CodeMoving: Encrypted code is only decrypted and executed in the
CmDongle
 Only with Universal Firm Code (UFC)
 Only with CmDongles 3-xxx, no CmActLicense
 Only locally, not via LAN
©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications
Method Code
Result
39
CodeMoving
 CodeMoving code currently needs to be written in C.
 The functionality of CodeMoving is already available
 R&D is currently working on how to automate the code translation
©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications
Java
AddIntegers.c
No program logic in java code.
 Automatically replaced by AxProtector with CodeMoving call
40
Java 9 Support
©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications 41
Support of Java 9
 Introduction of the Jigsaw module system
 Jar files can be created in a modular way: Modular Jars with additional rights management
 AxProtector Java supports the encryption of modular Jars
©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications
Module.jar
AxProtector
Module.jar
com.wibu.xpm.jar
42
Germany: +49-721-931720
USA: +1-425-7756900
China: +86-21-55661790
http://www.wibu.com
info@wibu.com
Many thanks for your kind attention!
©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications 43

More Related Content

PDF
Java: A Secure Programming Language for Today's Market
PPT
Java Security
PDF
Protecting and Licensing .NET Applications
PDF
Secure JEE Architecture and Programming 101
PPT
Chapter three Java_security.ppt
PDF
Javantura v4 - Security architecture of the Java platform - Martin Toshev
PPTX
Security Аrchitecture of Тhe Java Platform
PPTX
Security Architecture of the Java Platform (BG OUG, Plovdiv, 13.06.2015)
Java: A Secure Programming Language for Today's Market
Java Security
Protecting and Licensing .NET Applications
Secure JEE Architecture and Programming 101
Chapter three Java_security.ppt
Javantura v4 - Security architecture of the Java platform - Martin Toshev
Security Аrchitecture of Тhe Java Platform
Security Architecture of the Java Platform (BG OUG, Plovdiv, 13.06.2015)

Similar to A Safer Journey for Java Applications (20)

PDF
Security in Java
PDF
First Steps with Java Card
PPTX
Martin Toshev - Java Security Architecture - Codemotion Rome 2019
PDF
Java Platform Security Architecture
PPT
Secure programming - Computer and Network Security
ODP
Tollas Ferenc - Java security
PDF
Java Security Overview
PPT
java-card20232024999999999999999999999999999999999999999999999999999999999999...
PDF
Java: A Secure Programming Language for Today’s Market
PDF
Enterprise Java: Just What Is It and the Risks, Threats, and Exposures It Poses
PDF
null Bachaav Session | Secure Coding in Java
PPT
Sandboxing (Distributed computing)
PPTX
Security Architecture of the Java Platform (http://www.javaday.bg event - 14....
PDF
Running code in secure hardware or cloud environments
PDF
Advanced Java
PPTX
How java is better than other languages according to history and uses.
PDF
Popular Approaches to Preventing Code Injection Attacks are Dangerously Wrong
PDF
Guidelines to Improve the Robustness of the OSGi Framework and Its Services A...
PPT
JavaSecure
PPTX
From java to android a security analysis
Security in Java
First Steps with Java Card
Martin Toshev - Java Security Architecture - Codemotion Rome 2019
Java Platform Security Architecture
Secure programming - Computer and Network Security
Tollas Ferenc - Java security
Java Security Overview
java-card20232024999999999999999999999999999999999999999999999999999999999999...
Java: A Secure Programming Language for Today’s Market
Enterprise Java: Just What Is It and the Risks, Threats, and Exposures It Poses
null Bachaav Session | Secure Coding in Java
Sandboxing (Distributed computing)
Security Architecture of the Java Platform (http://www.javaday.bg event - 14....
Running code in secure hardware or cloud environments
Advanced Java
How java is better than other languages according to history and uses.
Popular Approaches to Preventing Code Injection Attacks are Dangerously Wrong
Guidelines to Improve the Robustness of the OSGi Framework and Its Services A...
JavaSecure
From java to android a security analysis
Ad

More from team-WIBU (20)

PDF
Transparency into Your Software’s True Reach
PDF
Modular Licensing and Software Protection
PDF
Optimizing license borrowing and offline license transfers
PDF
Mastering License Project Management Webinar
PDF
Mastering Feature-Based Licenses - Bundles and Module Items
PDF
CRA – Security with a Seal of Approval
PDF
Secure License Management for Small Devices
PDF
Hatching Ideas: Mastering Encryption and Obfuscation
PDF
Versatility in Motion - Your Perfect License.pdf
PDF
Post Quantum Cryptography – The Impact on Identity
PDF
Unlocking the Future: Empowering Industrial Security
PDF
The Power of Partnership: Enabling Success Together
PDF
Unleash the Power of CodeMeter - CodeMeter Basics
PDF
Keine Zeit für Leerlauf – Lizenzverfügbarkeit für Geschäftskontinuität
PDF
No Time to Idle – License availability for business continuity
PDF
Cloud-Based Licensing in Offline Scenarios
PDF
Optimizing Cloud Licensing: Strategies and Best Practices
PDF
For a Few Licenses More
PDF
App Management on the Edge
PDF
A Bit of License Management Magic
Transparency into Your Software’s True Reach
Modular Licensing and Software Protection
Optimizing license borrowing and offline license transfers
Mastering License Project Management Webinar
Mastering Feature-Based Licenses - Bundles and Module Items
CRA – Security with a Seal of Approval
Secure License Management for Small Devices
Hatching Ideas: Mastering Encryption and Obfuscation
Versatility in Motion - Your Perfect License.pdf
Post Quantum Cryptography – The Impact on Identity
Unlocking the Future: Empowering Industrial Security
The Power of Partnership: Enabling Success Together
Unleash the Power of CodeMeter - CodeMeter Basics
Keine Zeit für Leerlauf – Lizenzverfügbarkeit für Geschäftskontinuität
No Time to Idle – License availability for business continuity
Cloud-Based Licensing in Offline Scenarios
Optimizing Cloud Licensing: Strategies and Best Practices
For a Few Licenses More
App Management on the Edge
A Bit of License Management Magic
Ad

Recently uploaded (20)

PPTX
MLforCyber_MLDataSetsandFeatures_Presentation.pptx
PPTX
Cybersecurity-and-Fraud-Protecting-Your-Digital-Life.pptx
PDF
Practical Indispensable Project Management Tips for Delivering Successful Exp...
PDF
Guide to Food Delivery App Development.pdf
PDF
DNT Brochure 2025 – ISV Solutions @ D365
PDF
How AI/LLM recommend to you ? GDG meetup 16 Aug by Fariman Guliev
PDF
MCP Security Tutorial - Beginner to Advanced
PDF
Wondershare Recoverit Full Crack New Version (Latest 2025)
PPTX
How to Odoo 19 Installation on Ubuntu - CandidRoot
PDF
Top 10 Software Development Trends to Watch in 2025 🚀.pdf
PDF
Type Class Derivation in Scala 3 - Jose Luis Pintado Barbero
PPTX
Python is a high-level, interpreted programming language
PPTX
Cybersecurity: Protecting the Digital World
PDF
Ableton Live Suite for MacOS Crack Full Download (Latest 2025)
PDF
E-Commerce Website Development Companyin india
PPTX
Full-Stack Developer Courses That Actually Land You Jobs
PDF
How Tridens DevSecOps Ensures Compliance, Security, and Agility
PPTX
Trending Python Topics for Data Visualization in 2025
PDF
Visual explanation of Dijkstra's Algorithm using Python
DOCX
How to Use SharePoint as an ISO-Compliant Document Management System
MLforCyber_MLDataSetsandFeatures_Presentation.pptx
Cybersecurity-and-Fraud-Protecting-Your-Digital-Life.pptx
Practical Indispensable Project Management Tips for Delivering Successful Exp...
Guide to Food Delivery App Development.pdf
DNT Brochure 2025 – ISV Solutions @ D365
How AI/LLM recommend to you ? GDG meetup 16 Aug by Fariman Guliev
MCP Security Tutorial - Beginner to Advanced
Wondershare Recoverit Full Crack New Version (Latest 2025)
How to Odoo 19 Installation on Ubuntu - CandidRoot
Top 10 Software Development Trends to Watch in 2025 🚀.pdf
Type Class Derivation in Scala 3 - Jose Luis Pintado Barbero
Python is a high-level, interpreted programming language
Cybersecurity: Protecting the Digital World
Ableton Live Suite for MacOS Crack Full Download (Latest 2025)
E-Commerce Website Development Companyin india
Full-Stack Developer Courses That Actually Land You Jobs
How Tridens DevSecOps Ensures Compliance, Security, and Agility
Trending Python Topics for Data Visualization in 2025
Visual explanation of Dijkstra's Algorithm using Python
How to Use SharePoint as an ISO-Compliant Document Management System

A Safer Journey for Java Applications

  • 1. A Safer Journey for Java Applications Guenther Fischer Senior Consultant, Licensing and Protection Dr. Simon Kunz Java Security Expert AxProtector Java
  • 2. Agenda  Overview of Java  Introduction: Security and protection technologies for Java  AxProtector Java  Current security mechanisms  Java 9 support ©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications 2
  • 3. Overview of Java ©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications 3
  • 4. Java and the JVM/JRE  Java: Programming language developed by Sun in 1995  The JVM is an abstract machine  The instruction set is called Java Byte Code  Compiled Java programs consist of many class files that contain Byte Code (not native code)  JARS are ZIP archives with an additional manifest  Byte Code is interpreted and executed by Java Virtual Machine (JVM) at runtime  Byte Code is easy to reverse engineer  Classes are always loaded as a whole by the JVM ©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications 4
  • 5. Java – Write Once, Run Anywhere (WORA) ©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications Java Program (.java) Interpreter (JVM) Java Compiler JAVAC Java Byte Code (.class /.jar) Windows Interpreter (JVM) Linux Interpreter (JVM) macOS … 5
  • 6. Java Architecture ©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications Classloader Java Program *.class Files Bytec Code Verifier Interpreter (JVM) Host Operating System (Windows, Linux, macOS,..) Java API *.class Files 6
  • 7. Java Byte Code / Native Code Combination ©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications Java Runtime (Java) Java Virtual Machine (Native Code) JNI (Native Code) C/C++ can be used with JNI (Java Native Interface) 7
  • 8. Introduction: Security and Protection Technologies for Java ©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications 8
  • 9. Java and Security  Java classes are:  Easy to extract  Easy to replace (even system classes)  Easy to modify  The Java Byte Code is not a “secret”  Fact!  Everything written in Java is usually unsecure! ©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications 9
  • 10. Protection Goals  Protection against piracy (licensing)  IP protection against reverse engineering  Protection against industrial espionage  Protection against code exploitation  Integrity protection of data and code  Protection of sensitive product data (competitive advantage) ©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications 10
  • 11. The Arsenal of Cyber-Attackers (Java Decompiler .jar/.class -> .java) ©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications 11
  • 12. Multiple Sources of Information ©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications 12
  • 13. Possible Options  Obfuscation  Java2Exe (JET Engine) or Exe4j  Translation into native code  Possible other encryption methods with native tools  Encrypting Java Byte Code  Other methods  Example with CodeMeter Core API ©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications 13
  • 14. Java Obfuscation Tools (ClassMaster/Allatori/ProGuard….) ©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications 14
  • 15. Java Obfuscation Tools (ClassMaster/Allatori/ProGuard….) ©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications Java2Exe/JAR2EXE  Excelsior JET Engine/Regex Jar2Exe 15
  • 16. Principle of Java2Exe/Jar2Exe/Exe4J ©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications JavaCode JavaByteCode NativerCode JAVAC Compiler Excelsior JET Compiler Exe4J Compiler 16
  • 17. Additional Encryption-based Protection ©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications JavaCode JavaByteCode NativerCode Encrypted NativeCode JAVAC Compiler Excelsior JET Compiler AxProtector Native Exe4J Compiler 17
  • 18. Current Security Mechanisms of AxProtector Java ©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications 18
  • 19. Encryption ©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications  Encryption of the executable code before delivery  Decryption of required classes / methods at runtime in memory Encryption Unprotected Application Decryption AxEngine AxEngine 19
  • 20. Unencrypted Code (CAFEBABE) ©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications Magic Number Version Constant Pool Access Flag this Class super Class Interfaces Fields Methods Attributes 20
  • 21. Code Protected with AxProtector Java ©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications Magic Number Version Constant Pool Access Flag this Class super Class Interfaces Fields Methods Attributes 21
  • 22. AxProtector Java  AxProtector Java  Java 1.6  Java 1.7  Java 1.8  Java 9  Java Applications  Java Applets  Java Servlets ©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications 22
  • 23. AxProtector Java – Operational Principles  AxProtector Java automatic protection mechanisms at class / method level encrypt the Byte Code  Flexible licensing options  Each class is automatically decrypted while loading. For this, you need to initiatize AxProtector Runtime:  Java applications with main class => Automatically replaced by wrappers (com.wibu.xpm.Wrapper)  manual loading by EntryPoint ©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications 23
  • 24. Encryption at Class or Method Level Encryption at class level The class is encrypted as a whole The class is completely loaded and decrypted when used ©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications class Method 1 Method 2 Method 3 AxProtector class Method 1 Method 2 Method 3 24
  • 25. Encryption at Class or Method Level Encryption at method level Methods are extracted as new classes Methods are loaded and decrypted only when used Different license lists for individual methods (IxProtector) are possible ©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications class Ref 1 Ref 2 Ref 3 class Method 1 class Method 2 class Method 3 referenced class Method 1 Method 2 Method 3 25
  • 26. Encryption at Class or Method Level Encryption at class and method level ©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications class Ref 1 Ref 2 Ref 3 class Method 1 class Method 2 class Method 3 referenced class Method 1 Method 2 Method 3 Example: Basic License Feature-based License 26
  • 27. The Three Types of Encryption Configuration  Annotations in source code  AxProtector GUI  xml configuration file ©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications 27
  • 28. Annotations in Source Code  @Protected (licenseList=0)  @Unprotected  @EntryPoint ©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications 28
  • 29. AxProtector GUI ©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications 29
  • 30. xml – Configuration File ©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications 30
  • 31. Traps in a Java Application  If a class or method defined as a trap is decrypted, the license is locked: Firm Access Counter  0  Inserting traps automatically or manually ©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications 31
  • 32. Traps in a Java Application Manual insertion using annotations: ©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications class Ref 1 Ref 2 Ref 3 class Method 1 class Method 2 class Method 3 referenced class Method 1 Method 2 Method 3 trap @Trap private static void Method3() { } 32 Sample referencing: if (tax > 100%) { Method3() }
  • 33. Traps in a Java Application Automatic insertion using the command line option ©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications Example: Option -trap1:70 adds to approx. 70% of the encrypted methods traps class Ref 1 Ref 2 Ref 3 class Method 1 class Method 2 class Method 3 class Method 1 Method 2 Method 3 Ref 4 class Method 4 AxProtector summary output: 33
  • 34. Encryption of the Constant Pool (Option –caa1)  Constant entries in the constant pool related to the data types of the string, int and long remain encrypted all the way through  Decryption is done as needed Clear text:  Keys change dynamically ©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications String a = “Hello World!”; String a = “ut3ilspNQ”; a = decrypt(a); Native Function Call Byte Code Constant Pool Java Class 34
  • 35. Encryption of the Method Control Flow (Option –caa2) ©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications class Ref 1 Ref 2 Ref 3 class XYZ class YZF class LQZ class Method 1 Method 2 Method 3 Encrypts the references to the extracted methods Program flow can no longer be read 35
  • 36. Obfuscation of Names  Applicable to: • Classes • Methods • Fields • Packages • Local Variables  Individually controllable for classes and methods  Applicable to encrypted and unencrypted classes / methods ©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications Example: 36
  • 37. Obfuscation of Individual Names with AxProtector GUI ©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications Example: 37
  • 38. Integrity Verification  Protection against tampering .class files  Individually applicable for classes and methods  Applicable to encrypted and unencrypted classes / methods ©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications 38
  • 39. CodeMoving  CodeMoving: Encrypted code is only decrypted and executed in the CmDongle  Only with Universal Firm Code (UFC)  Only with CmDongles 3-xxx, no CmActLicense  Only locally, not via LAN ©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications Method Code Result 39
  • 40. CodeMoving  CodeMoving code currently needs to be written in C.  The functionality of CodeMoving is already available  R&D is currently working on how to automate the code translation ©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications Java AddIntegers.c No program logic in java code.  Automatically replaced by AxProtector with CodeMoving call 40
  • 41. Java 9 Support ©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications 41
  • 42. Support of Java 9  Introduction of the Jigsaw module system  Jar files can be created in a modular way: Modular Jars with additional rights management  AxProtector Java supports the encryption of modular Jars ©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications Module.jar AxProtector Module.jar com.wibu.xpm.jar 42
  • 43. Germany: +49-721-931720 USA: +1-425-7756900 China: +86-21-55661790 http://www.wibu.com info@wibu.com Many thanks for your kind attention! ©2018, WIBU-SYSTEMS AG. All rights reserved. - A Safer Journey for Java Applications 43