Decompiling Java applications

Decompilation is the process of recreating source code Decompiler
I Recently wondered: What Decompiler is the best?
Began to torment Google, experiment. Finally found a great solution. As decompiling any program and get working the "source"? This was in the subject.

Quick overview of the popular Decompiler software


Mocha

Mocha (the author, Hanpeter van Vliet) is probably one of the first released of Java Decompiler software. Provides a console user interface. It was released in 1996, the year before, as a Java Development Kit version 1.1

JAva Decompiler

JAva Decompiler, JAD (author — Pavel Kouznetsov) — apparently, the
popular Decompiler Java. Like Mocha, the Decompiler provides a console interface, not updated and not supported, but a large number of graphical tools to work with it, including the JadClipse plugin for Eclipse IDE that makes it to this day used as handy tools to decompile the classes small.
In addition to decompiling JAva Decompiler has the ability to disassembly .class files.

DJ Java Decompiler

DJ Java Decompiler (the author — Atanas Neshkov) — for a long time despite its name is only a GUI for the previous program, allowing easily and conveniently to select the command-line arguments to call JAD. In the current version added support for annotations, but the program has become shareware (purchase after 10 trial uses).

JD-Core

JD-Core (by Emmanuel Dupuy) is a very powerful and functional library for decompiling and analyzing Java bytecode, developed in the framework of the "Java Decompiler project".
Has the following features:
the
    the
  • Entirely written in C++, which makes decompilation extremely fast
  • the
  • without the need for the Java Runtime Environment and therefore does not require special installation
  • the
  • Correctly decompiles .class files generated by most compilers
Perhaps the disadvantages of JD-Core can be attributed only to the fact that it is as
part of the independent graphic apps JD-GUI, also developed in C++ and prilinkovan to it statically, or plugin JD-Eclipse for the Eclipse development environment that makes it virtually impossible to use in third-party non-profit project, especially developed in the Java language. Use the library in commercial software is prohibited by the author.

Fernflower

Fernflower — one of the best Decompiler software Java programming language to date.
Has the following features:
1. Support various language constructs:
the
    the
  • Parametric types
  • the
  • the Annotations
  • the
  • Enum types
  • the
  • Statements
2. Correctly decompiles the bytecode, generated due to some known bugs of compilers

My choice


    the
  1. JD-GUI — for viewing, not more
  2. the
  3. Fernflower — full restore

Stop at the second. In General, the author of the Decompiler not seem to put an offline version in the common access(or I missed this fact when reading his blog), until recently, was only online. But for me it was a pleasant surprise to find it on one forum!

Download: fernflower.jar

Quote from blog:
Fernflower will develop in the direction of deobfuscator
...
Special features deobfuscation now contains the Fernflower not, they will connect in the future, individual modules,
because the online version for reasons unknown doesn't work, and about offline it's hard to say anything(except that the quality of the decompilation is excellent), not about any modules at the moment of speech can not be.
do Not have another module rename
Yes. Look for something on the Internet.
The revenue will come Proguard, but unusual
ProGuardDeobfuscator — a small modification of ProGuard, turning it into a quasi-deobfuscator. In the process obfuscated the short names of packages, classes, fields and methods are replaced by more meaningful and unique within a Jar file.
Download the source code and deobfuscator: projectd8.org/Programs/Java/PGD
The tools are all there, but I personally, for ease of recreating sorrow use the same favorite Netbeans IDE helps you a lot with their tips, especially when a lot of classes.
Thank you for your attention!

Links

se.math.spbu.ru/SE/YearlyProjects/2011/YearlyProjects/2011/345/345_Mikhailov_report.pdf
ru-java.livejournal.com

UPD:
Sorry, in the offline version of Fernflower there is a module renaming and lots of other stuff — Readme
Article based on information from habrahabr.ru

Комментарии

Популярные сообщения из этого блога

Why I left Google Zurich

2000 3000 icons ready — become a sponsor! (the table of orders)

New web-interface for statistics and listen to the calls for IP PBX Asterisk