分享

JD-GUI 反译工程

 鹰皇软件 2013-07-04

The “Java Decompiler project” aims to develop tools in order to decompile and analyze Java 5 “byte code” and the later versions.

JD-Core is a library that reconstructs Java source code from one or more “.class” files. JD-Core may be used to recover lost source code and explore the source of Java runtime libraries. New features of Java 5, such as annotations, generics or type “enum”, are supported. JD-GUI and JD-Eclipse include JD-Core library.

JD-GUI is a standalone graphical utility that displays Java source codes of “.class” files. You can browse the reconstructed source code with the JD-GUI for instant access to methods and fields.

JD-Eclipse is a plug-in for the Eclipse platform. It allows you to display all the Java sources during your debugging process, even if you do not have them all.

JD-IntelliJ is a plug-in for ? the IntilliJ IDE.

JD-Core, JD-GUI, JD-Eclipse and JD-IntelliJ are free for non-commercial use. This means that JD-Core, JD-GUI and JD-Eclipse shall not be included or embedded into commercial software products. Nevertheless, these projects may be freely used for personal needs in a commercial or non-commercial environments.

  • JD-Core and JD-GUI are written in C++. This allows an extremely fast decompilation and a display.
  • JD-Core does not require the Java runtime environment for its functioning, therefore no special setup is required.
  • JD-Core works with most current compilers including the following:
    • jdk1.1.8
    • jdk1.3.1
    • jdk1.4.2
    • jdk1.5.0
    • jdk1.6.0
    • jdk1.7.0
    • jikes-1.22
    • harmony-jdk-r533500
    • Eclipse Java Compiler v_677_R32x, 3.2.1 release
    • jrockit90_150_06
  • JD-Core supports the following new features of Java 5:
    • Annotations
    • Generics
    • Type “enum”
  • JD-GUI supports Drag and Drop.
  • JD-GUI supports JAR files.
  • JD-GUI displays color coded Java source code.
  • JD-GUI allows you to browse the “class” files hierarchy.
  • JD-GUI displays “log” files, and allow you to decompile “class” files appearing in Java stack traces.
  • JD-Core, JD-GUI and JD-Eclipse use the excellent cross-platform wxWidgets toolkit.

JD-GUI is a standalone graphical utility that displays Java source codes of “.class” files. You can browse the reconstructed source code with the JD-GUI for instant access to methods and fields.

JD-GUI is free for non-commercial use. This means that JD-GUI shall not be included or embedded into commercial software products. Nevertheless, this project may be freely used for personal needs in a commercial or non-commercial environments.

Releases 

Snapshot

Thanks

Thanks to Andy Taylor to host JD-GUI files on http:// !

Donations

Did JD-GUI help you to solve a critical situation? Do you use JD-Eclipse daily? What about making a donation?

Disclaimer

Copyright ? 2008-2013 Emmanuel Dupuy.

THIS SOFTWARE IS PROVIDED “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Legend: enhancement, major enhancement, bug fix, major bug fix

JD-GUI
  • 0.3.5 18 Oct 2012
    • JD-GUI includes JD-Core 0.6.2.
  • 0.3.4 28 Aug 2012
    • JD-GUI includes JD-Core 0.6.1.
  • 0.3.3 18 Aug 2010
  • 0.3.2 20 Mar 2010
    • Added an outline view in the navigation trees.
    • Added an outline view popup window.
    • Improvement of enlightenment of fields and methods from search results.
    • Improvement of hyperlinks on the log pages.
    • Improvement of tab names.
    • OSX: Fixed bug on "Info.plist" file.
    • OSX: DnD to docked JD-GUI icon works.
    • OSX: Optimisation of tree font.
    • Linux: Optimisation of tree font.
    • Added hyperlink on "Premain-Class' in "MANIFEST.MF".
    • Limitation of depth of automatic folder exploration.
    • Fixed bug on octal and unicode representation of characters.
    • Added capability to escape unicode characters.
    • Improvement of history management.
    • JD-GUI includes JD-Core 0.5.4.
  • 0.3.1 22 Nov 2009
    • Indexation of annotations.
    • Display packages of unarchived projects.
    • Fixed bug on "Search" dialog box.
    • Fixed bug on "Open Type Hierarchy" dialog box.
    • Fixed bug on "Open Type Hierarchy" dialog box.
    • Fixed bug on the process of project exploration.
    • Improvement of the robustness of indexation against the corrupted classes.
    • JD-GUI includes JD-Core 0.5.3.
  • 0.3.0 29 Oct 2009
    • Added an engine indexing.
    • Added a "Search" dialog box.
    • Added an "Open Type Hierarchy" dialog box.
    • Added capability to open Java Core files generated by IBM JVM.
    • JD-GUI includes JD-Core 0.5.2.
  • 0.2.10 01 Jul 2009
    • Fixed bug with focus.
    • Fixed bug with tree view.
    • Added the name of the decompiled class in the title of the application.
    • Added the ZIP file support.
    • Added the "Go to Line" dialog box.
    • Added the highlightment of the words.
    • JD-GUI includes JD-Core 0.5.1.
  • 0.2.9 26 Apr 2009
    • Added capability to hide/show “import” statements.
    • JD-GUI includes JD-Core 0.5.0.
  • 0.2.8 06 Mar 2009
    • Improvement of the ".properties" file editor.
    • Fixed crash when clicking on the back button.
    • Improvement of source code layout.
    • JD-GUI includes JD-Core 0.4.7.
  • 0.2.7 23 Dec 2008
    • Added menu "Recent Files".
    • JD-GUI includes JD-Core 0.4.6.
  • 0.2.6 23 Nov 2008
  • 0.2.5 11 Sep 2008
    • All files, in JAR files, are displayed.
    • JD-GUI includes JD-Core 0.4.4.
  • 0.2.4 03 Aug 2008
    • Added capability to alert user when a new version is available.
    • Fixed bug on generation of color coded Java source code.
    • JD-GUI includes JD-Core 0.4.3.
  • 0.2.3 13 Jul 2008
    • Added capability to decompile “.class” files appearing in Java stack traces.
    • Improvement the layout of Java sources.
    • JD-GUI includes JD-Core 0.4.2.
  • 0.2.2 27 Jun 2008
    • Added capability to display original line numbers if this information is available in “.class” files.
    • Fixed many memory leaks.
  • 0.2.1 24 May 2008
    • Added capability to save Java sources of single “.class” files, or of all classes contained in JAR files.
    • Fixed a bug on the reloading of links between pages.
    • JD-GUI includes JD-Core 0.4.0.
  • 0.2.0 13 Apr 2008
    • Re-engineering of JD-GUI.
    • Added search panel.
    • JD-GUI includes JD-Core 0.3.5.
  • 0.1.3 20 Mar 2008
    • Fixed crash caused by 'Open Type' window when an empty JAR file is opened in JD-GUI.
    • Added tooltips on the toolbar.
    • JD-GUI includes JD-Core 0.3.4.
  • 0.1.2 16 Feb 2008
    • A new 'Open Type' window is included to quickly find a type.
    • Fixed bug of focus on tree view.
    • JD-GUI includes JD-Core 0.3.3.
  • 0.1.1 03 Feb 2008
    • JD-GUI supports JAR files.
    • JD-GUI includes JD-Core 0.3.2.
  • 0.1.0 15 Jan 2008
    • First public version.
JD-Core
  • 0.6.2 18 Oct 2012
    • Fixed bug on the decompilation of expressions : "(a - b) / 100.0D" was displayed as "a - b / 100.0D".
  • 0.6.1 28 Aug 2012
    • Improvement of recognition of instruction flows.
    • Significant improvement in the stability of the core.
  • 0.6.0 18 Aug 2010
  • 0.5.4 20 Mar 2010
    • Fixed bug on call of "this(...)" in constructors.
    • Display unique constructor without argument and launching exception(s).
    • Fixed bug of octal representation of characters.
    • Improvement of reconstruction of ".class" generated by JRE 1.4.
    • Display initial value of boolean attribute.
    • Display constructors of Enum.
    • Fixed major bug on pre and post incrementation statements.
    • Java 5: Display switch+Enum.
    • Java 7: Display switch+String.
    • Fixed bug on priority of operators.
    • Remove extra parentheses associated with return statement.
  • 0.5.3 22 Nov 2009
    • Fixed bug on decompilation of 'assert'.
    • Improvement of the robustness of JD-Core against the corrupted classes.
  • 0.5.2 29 Oct 2009
    • Added support of 'assert'.
    • Fixed bug on recongnition of the 'for' statements.
    • Fixed bug on recongnition of the synchronized blocks.
    • Fixed bug on recongnition the 'if' statements.
    • Fixed bug on recongnition the ternary statements.
    • Fixed bug on recongnition the 'try' statements.
  • 0.5.1 30 Jun 2009
  • 0.5.0 26 Apr 2009
    • Redesigned core to improve the decompilation of the inner classes.
    • Improvement of the reconstruction of the Java 5 “for-each” loops.
    • Fixed bug on declaration of variables.
    • Fixed bug on empty “finally” blocks.
  • 0.4.7 27 Feb 2009
    • Fixed bug on constants of type long.
    • Fixed bug on floating point precision.
    • Fixed bug on decompilation of multiple super interfaces.
    • Fixed bug on initialization of arrays of constants.
    • Fixed bug on boolean operators values.
    • Added capability to decompile Java 5 “for-each” loop.
  • 0.4.6 24 Dec 2008
  • 0.4.5 23 Nov 2008
    • Improvement of recontruction of ternary operator.
    • Improvement of decompilation of the Hashtable class compiled with javac 1.5.0 and 1.6.0.
    • Fix bug on declaration of interface.
  • 0.4.4 11 Sep 2008
    • Improvement of reconstruction of statments “try ... catch ... finally” and “synchronized”.
    • Fixed bug with reconstruction of instructions “dup2_x1”.
    • Added reconstruction of assigment operators.
    • Fixed memory leak.
    • Fixed many other bugs...
  • 0.4.3 03 Aug 2008
    • Fixed bug with reconstruction of statment “if” in the blocks “try”.
    • Improvement of reconstruction of obfuscated variable names.
    • Fixed bug with reconstruction of comparisons of variables of types “long” and “double”.
    • Fixed bug with display of constants of type “long”.
  • 0.4.2 13 Jul 2008
    • Added initialization of attributes instance.
  • 0.4.1 27 Jun 2008
    • Fixed many memory leaks.
  • 0.4.0 24 May 2008
    • Fixed many bugs...
    • Redesigned core to take advantage of the line numbers if this information is present in “.class” files.
    • Improvement of reconstruction of loops “for”.
    • Improvement of initialisation of arrays.
  • 0.3.5 13 Apr 2008
    • Fixed bug in generation of list of “import”.
    • Fixed bug in reconstruction of ternary operator.
    • Display annotations on method parameters.
  • 0.3.4 20 Mar 2008
    • Fixed crash caused by deserialization of annotations.
    • Improvement of reconstruction of Java keyword “class” compiled with JDK 1.1.8, 1.3.1 & 1.4.2, Jikes 1.22, Eclipse Java Compiler v_677_R32x and harmony-jdk-r533500.
    • Fixed bug in reconstruction of the “try...catch” statements.
    • Fixed bug in module for determination of type of local variables.
    • Improvement of reconstruction of blocs “try...finally” compiled with JDK 1.1.8.
  • 0.3.3 16 Feb 2008
    • Improvement of module for determination of type of local variables.
    • Improvement of creation of the “try...catch” statements.
    • Changed priority of operators '+=' and '-='.
    • Fixed syntax error on “throws” keyword.
    • Fixed bug of methods named “length()”.
    • Fixed bug in deserialization of "wide" instruction.
  • 0.3.2 03 Feb 2008
    • Fixed “java.util.Collections” 1.5 decompilation bug.
    • Renamed methods when their name is a Java keyword.
  • 0.3.1 15 Jan 2008
    • First public version.

JD-Eclipse is a plug-in for the Eclipse platform. It allows you to display all the Java sources during your debugging process, even if you do not have them all.

JD-Eclipse is free for non-commercial use. This means that JD-Eclipse shall not be included or embedded into commercial software products. Nevertheless, this project may be freely used for personal needs in a commercial or non-commercial environments.

Windows Platform Prerequisites

The native library, included into JD-Eclipse for Windows, has been built with Microsoft Visual C++ 2008 Express Edition. Some runtime components of Visual C++ Libraries are required to run the decompiler. You can download and install them from the Microsoft Web site:

Microsoft Visual C++ 2008 SP1 Redistributable Package (x86)

Microsoft Visual C++ 2008 SP1 Redistributable Package (x64)

Installation

Instructions

  1. From the Help menu in Eclipse, select Install New Software... to open an Install dialog window (shown below).


  2. Add a new repository to add JD-Eclipse plug-in:
    1. Click on the Add... button to open the New Repository dialog window.
    2. Type JD-Eclipse Update Site in the site Name text box.
    3. In the URL text box, type the URL for the JD-Eclipse update site: http://jd./jd-eclipse/update and click OK.

  3. Check boxes "Java Decompiler Eclipse Plug-in" and "JD-Eclipse Plug-in", and click on Next buttons.
  4. Choose the option to accept the terms of the license agreement (shown below).


  5. Click on the Finish button.
  6. On the Selection Needed dialog window, click on the Select All and Ok buttons.
  7. Restart Eclipse.

Offline installation

Click here to download the Eclipse Update Site.

Size : 2.61 Mo
MD5 checksum : B0595389D3A604B782BB94FC94A93A8B

Supported Platforms

  • Windows 32/64-bit
  • Linux 32/64-bit
  • Mac OSX 32/64-bit on x86 hardware

Thanks

Thanks to Andy Taylor to host JD-Eclipse Update Site files on http:// !

Donations

Did JD-GUI help you to solve a critical situation? Do you use JD-Eclipse daily? What about making a donation?

Disclaimer

Copyright ? 2008-2013 Emmanuel Dupuy.

THIS SOFTWARE IS PROVIDED “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Legend: enhancement, major enhancement, bug fix, major bug fix

JD-Eclipse
  • 0.1.3 17 Dec 2009
    • Added a preferences panel (Preferences > Java > Decompiler) to show/hide the line numbers and the metadata.
    • JD-Eclipse 0.1.3 includes JD-Core 0.5.3.
  • 0.1.2 26 Jul 2009
    • Improvement of the class file locator.
    • Added capability to edit the decompiled source files.
    • The Linux and Windows 64-bit platforms are supported.
    • JD-Eclipse 0.1.2 includes JD-Core 0.5.1.
  • 0.1.1 11 May 2009
    • The line numbers are displayed.
    • The meta-data and some additional informations are added.
    • The "Check for update" feature was removed.
    • JD-Eclipse runs under Mac OSX.
    • The JD-Eclipse protection, checking the current date, was removed.
    • JD-Eclipse 0.1.1 includes JD-Core 0.5.0.
  • 0.1.0 18 Feb 2009
    • First public version.
JD-Core
  • 0.6.2 18 Oct 2012
    • Fixed bug on the decompilation of expressions : "(a - b) / 100.0D" was displayed as "a - b / 100.0D".
  • 0.6.1 28 Aug 2012
    • Improvement of recognition of instruction flows.
    • Significant improvement in the stability of the core.
  • 0.6.0 18 Aug 2010
  • 0.5.4 20 Mar 2010
    • Fixed bug on call of "this(...)" in constructors.
    • Display unique constructor without argument and launching exception(s).
    • Fixed bug of octal representation of characters.
    • Improvement of reconstruction of ".class" generated by JRE 1.4.
    • Display initial value of boolean attribute.
    • Display constructors of Enum.
    • Fixed major bug on pre and post incrementation statements.
    • Java 5: Display switch+Enum.
    • Java 7: Display switch+String.
    • Fixed bug on priority of operators.
    • Remove extra parentheses associated with return statement.
  • 0.5.3 22 Nov 2009
    • Fixed bug on decompilation of 'assert'.
    • Improvement of the robustness of JD-Core against the corrupted classes.
  • 0.5.2 29 Oct 2009
    • Added support of 'assert'.
    • Fixed bug on recongnition of the 'for' statements.
    • Fixed bug on recongnition of the synchronized blocks.
    • Fixed bug on recongnition the 'if' statements.
    • Fixed bug on recongnition the ternary statements.
    • Fixed bug on recongnition the 'try' statements.
  • 0.5.1 30 Jun 2009
  • 0.5.0 26 Apr 2009
    • Redesigned core to improve the decompilation of the inner classes.
    • Improvement of the reconstruction of the Java 5 “for-each” loops.
    • Fixed bug on declaration of variables.
    • Fixed bug on empty “finally” blocks.
  • 0.4.7 27 Feb 2009
    • Fixed bug on constants of type long.
    • Fixed bug on floating point precision.
    • Fixed bug on decompilation of multiple super interfaces.
    • Fixed bug on initialization of arrays of constants.
    • Fixed bug on boolean operators values.
    • Added capability to decompile Java 5 “for-each” loop.
  • 0.4.6 24 Dec 2008
  • 0.4.5 23 Nov 2008
    • Improvement of recontruction of ternary operator.
    • Improvement of decompilation of the Hashtable class compiled with javac 1.5.0 and 1.6.0.
    • Fix bug on declaration of interface.
  • 0.4.4 11 Sep 2008
    • Improvement of reconstruction of statments “try ... catch ... finally” and “synchronized”.
    • Fixed bug with reconstruction of instructions “dup2_x1”.
    • Added reconstruction of assigment operators.
    • Fixed memory leak.
    • Fixed many other bugs...
  • 0.4.3 03 Aug 2008
    • Fixed bug with reconstruction of statment “if” in the blocks “try”.
    • Improvement of reconstruction of obfuscated variable names.
    • Fixed bug with reconstruction of comparisons of variables of types “long” and “double”.
    • Fixed bug with display of constants of type “long”.
  • 0.4.2 13 Jul 2008
    • Added initialization of attributes instance.
  • 0.4.1 27 Jun 2008
    • Fixed many memory leaks.
  • 0.4.0 24 May 2008
    • Fixed many bugs...
    • Redesigned core to take advantage of the line numbers if this information is present in “.class” files.
    • Improvement of reconstruction of loops “for”.
    • Improvement of initialisation of arrays.
  • 0.3.5 13 Apr 2008
    • Fixed bug in generation of list of “import”.
    • Fixed bug in reconstruction of ternary operator.
    • Display annotations on method parameters.
  • 0.3.4 20 Mar 2008
    • Fixed crash caused by deserialization of annotations.
    • Improvement of reconstruction of Java keyword “class” compiled with JDK 1.1.8, 1.3.1 & 1.4.2, Jikes 1.22, Eclipse Java Compiler v_677_R32x and harmony-jdk-r533500.
    • Fixed bug in reconstruction of the “try...catch” statements.
    • Fixed bug in module for determination of type of local variables.
    • Improvement of reconstruction of blocs “try...finally” compiled with JDK 1.1.8.
  • 0.3.3 16 Feb 2008
    • Improvement of module for determination of type of local variables.
    • Improvement of creation of the “try...catch” statements.
    • Changed priority of operators '+=' and '-='.
    • Fixed syntax error on “throws” keyword.
    • Fixed bug of methods named “length()”.
    • Fixed bug in deserialization of "wide" instruction.
  • 0.3.2 03 Feb 2008
    • Fixed “java.util.Collections” 1.5 decompilation bug.
    • Renamed methods when their name is a Java keyword.
  • 0.3.1 15 Jan 2008
    • First public version.

JD-IntelliJ is a plug-in for IntelliJ IDEA, initiated by Brice Dutheil. It allows you to display all the Java sources during your debugging process, even if you do not have them all. Currently, the project is under development. The Java sources are hosted on Bitbucket. Your contributions are welcome.

JD-IntelliJ is free for non-commercial use. This means that JD-IntelliJ shall not be included or embedded into commercial software products. Nevertheless, this project may be freely used for personal needs in a commercial or non-commercial environments.

Windows Platform Prerequisites

The native library, included into JD-Eclipse for Windows, has been built with Microsoft Visual C++ 2008 Express Edition. Some runtime components of Visual C++ Libraries are required to run the decompiler. You can download and install them from the Microsoft Web site:

Microsoft Visual C++ 2008 SP1 Redistributable Package (x86)

Microsoft Visual C++ 2008 SP1 Redistributable Package (x64)

Installation 

  1. Download the project from Bitbucket.
  2. Import it on IntelliJ IDEA.
  3. Create a new configuration with the type "plugin".
  4. Run the new configuration.
  5. Copy native library on the sandbox folder if needed.

Supported Platforms

  • Windows 32/64-bit
  • Linux 32/64-bit
  • Mac OSX 32/64-bit on x86 hardware

Donations

Did JD-GUI help you to solve a critical situation? Do you use JD-Eclipse daily? What about making a donation?

Disclaimer

Copyright ? 2008-2013 Emmanuel Dupuy.

THIS SOFTWARE IS PROVIDED “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多