A Java decompiler is a special type of decompiler which takes a class file as input and produces Java source code as output. De-compilation is exactly the reverse process of compilation. However, decompilation will never produce an exact replica of the source code but does give back a major percentage. This is because quite a bit of information from the source code is lost (for code optimization) in the compilation.
De-compilation is generally used to reverse engineer a Java program. This process becomes very useful for competitors to dig into the source code and understand the working of a Java program made by someone else.
There are multiple Java decompilers available in the market, some are free and some are paid. Let’s see a few of them.
JD-Core / JD-GUI / JD-Eclipse
The JD-Core decompiler works only for version Java 5 and newer. It is basically a set of libraries that converts a single or group of class files into Java source program.Written entirely in C++, the decompilation process is much faster. It is also independent of the Java Runtime Environment (JRE), and therefore works as a standalone utility.
JD-GUI and JD-Eclipse are the extended products of JD-Core for graphical use and Eclipse IDE, respectively.
JD-GUI is a graphic-based software, encompassing JD-Core at its epicenter, for decompilation of class files. It supports drag-and-drop facility, JAR integration, graphical display, and logging.
J-Eclipse, again with JD-Core at its epicenter, is an Eclipse plugin which helps the programmer to work while debugging in Eclipse.
Note: All of the three products mentioned above are free-to-use for non-commercial use only.
DJ Java Decompiler
DJ Java Decompiler is available only for the Windows platform. It is a standalone application without requiring installation of Java. It showcases a comprehensive graphical editor which makes it easier for you to work around with Java and class files.
Under the hood, DJ Java Decompiler makes use of the unmaintained JAD (JAva Decompiler) – which is a command-line based decompiler.
JReversePro
JReversePro is licensed under the GNU GPL license. It is again a decompiler and disassembler for Java. Along with a graphical utility (Swing based and AWT based), it also allows you to interact with it using the command-line interface.
JODE
JODE is licensed under the GNU GPL license, therefore it is free to use. It is a decompiler and optimizer for Java. JODE claims to not be perfect in retrieving 100% of the original Java source code from a class file, but it manages to return the maximum similarity.
Books Java Decompiling
Writing for those who want to learn Java by decompilation, Nolan, a specialist in web site optimization, explains how to turn partially compiled Java bytecodes back into source code so that readers can see what the original programmer was thinking. Early chapters unravel the Java classfile format and show how Java code is stored as bytecode and executed by the JVM. Later chapters focus on how to write a Java decompiler, and a final chapter offers case studies. |
As a Java developer, you may find yourself in a situation where you have to maintain someone else’s code or use a third-party’s library for your own application without documentation of the original source code. Rather than spend hours feeling like you want to bang your head against the wall, turn to Covert Java: Techniques for Decompiling, Patching, and Reverse Engineering. These techniques will show you how to better understand and work with third-party applications. Each chapter focuses on a technique to solve a specific problem, such as obfuscation in code or scalability vulnerabilities, outlining the issue and demonstrating possible solutions. Summaries at the end of each chapter will help you double check that you understood the crucial points of each lesson. You will also be able to download all code examples and sample applications for future reference from thepublisher’s website. Let Covert Java help you crack open mysterious codes! |
Atanas
Another java decompiler – AndroChef Java Decompiler is available: http://www.neshkov.com/ac_decompiler.html