Solid Java Code Protection
Excelsior JET protects your code from being stolen or tampered with
Java class files are easy to reverse-engineer. Their very properties that enable Java applications to be run anywhere make reverse translation straightforward. There are a number of Java decompilers on the market that produce amazingly readable source code.
An obfuscator can make the decompiled code less comprehensible, but control flow obfuscation, implemented by some tools, may negatively impact performance, and your classes may not pass stricter verification procedures in future versions of Java. In any case, understanding what your obfuscated Java program does would still be easier than reverse engineering a C++ program passed through an optimizing compiler.
Having your Java application optimized by Excelsior JET instead of obfuscating its bytecodes, you ship solid binary executables to your end users, while avoiding the performance penalty caused by obfuscation. Reverse translation of optimized native code is a very hard task, which cannot be automated like Java bytecode decompilation. If you are not sure about that, consider the following reasons:
- Decompiling a native executable, also known as disassembling, produces a listing with tons of mnemonics of CPU instructions. No more and no less. By simply viewing such a listing, there is no way to determine where the code for a particular method is located.
- Depending on other adjacent operators, a Java operator from the source code may appear in the listing as dozens of different native code patterns.
- During the course of optimization, the JET compiler often relocates pieces of code within a method. Furthermore, the compiler often inserts copies of methods into the places from where they are called. Although an optimized method is functionally equivalent to the original one, the initial source code is far removed from the resulting native code and cannot be easily restored.
Note that static compilation alone may not prevent circumvention of most copy protection mechanisms - after all, hackers have been cracking C/C++ programs since day one. But the retrieval of your intellectual property (algorithms, proprietary data formats, encryption keys) from the end-user code of your application becomes considerably more challenging to your competition.
To sum up, highly optimized native code is firmly protected from complete reverse engineering.
Protect Your Java Code - Through Obfuscators And Beyond
A beginner's guide to Java code protection, showing where obfuscation falls short and what can be done about that.
Relevant Excelsior JET Knowledge Base articles:
- HOWTO: Maximize protection of your application against reverse engineering
- HOWTO: Compile an application that uses a security provider
Find out how Excelsior JET can also help you:
Learn how these benefits apply to: