diff --git a/jode/build.xml b/jode/build.xml index c286bf1..4c292d5 100644 --- a/jode/build.xml +++ b/jode/build.xml @@ -40,7 +40,6 @@ - @@ -250,19 +249,14 @@ - - - - - - - - - - - - + + + + + + + + diff --git a/jode/config.props b/jode/config.props index 3fd79b1..e9bdf86 100644 --- a/jode/config.props +++ b/jode/config.props @@ -19,10 +19,10 @@ javadoc.href=http://java.sun.com/products/jdk/1.2/docs/api/ # Remove the next line if perl is not installed. perl.present=true -# Is PHP installed on your system? +# Is HTP installed on your system? # -# php is needed to generate html files from php files. -# You also need perl. +# htp is needed to generate html files from htp files. +# see http://htp.sourceforge.net/ # -# Remove the next line if either perl or php is not installed. -php.present=true +# Remove the next line if either htp is not installed. +htp.present=true diff --git a/jode/doc/a-logo.gif b/jode/doc/a-logo.gif deleted file mode 100644 index cf02839..0000000 Binary files a/jode/doc/a-logo.gif and /dev/null differ diff --git a/jode/doc/applet.php b/jode/doc/applet.htp similarity index 94% rename from jode/doc/applet.php rename to jode/doc/applet.htp index edb127f..55edac3 100644 --- a/jode/doc/applet.php +++ b/jode/doc/applet.htp @@ -1,5 +1,4 @@ - -

The JODE Applet

+

Please be patience, loading the applet may take some time.

@@ -35,4 +34,5 @@ files from the same server as the applet, and this is the reason why you have to use such a weird URL.

Save probably doesn't work, because it is forbidden by your browser.

- + +
diff --git a/jode/doc/bluesky.php b/jode/doc/bluesky.htp similarity index 90% rename from jode/doc/bluesky.php rename to jode/doc/bluesky.htp index 247df14..b87fc87 100644 --- a/jode/doc/bluesky.php +++ b/jode/doc/bluesky.htp @@ -1,10 +1,7 @@ - -

Blue Sky

+

This section contains features that I think would be great to have, -but are also very hard to implement. The name of the section is -inspired, by Mozilla.

+but are also very hard to implement.

Currently this are all my own ideas. But if you send me an idea for an interesting feature, I will add it to this list.

@@ -34,8 +31,8 @@ assignments

int l_1 = array.length String l_2 = object.getName() -we could name them "length" and "name". If we -have assignments: +

we could name them "length" and "name". If we +have assignments:

 MenuItem local_1 = new MenuItem("Open");
 MenuItem local_2 = new MenuItem("Save");
@@ -69,4 +66,4 @@ copy them back into the java code. 

This doesn't need to be built into the decompiler. A script that takes the javadoc pages and the decompiled code can easily merge them.

- +
diff --git a/jode/doc/download.php b/jode/doc/download.htp similarity index 69% rename from jode/doc/download.php rename to jode/doc/download.htp index 2a0aa80..968d2b8 100644 --- a/jode/doc/download.php +++ b/jode/doc/download.htp @@ -1,11 +1,10 @@ - -

Download

+
-

Jode is available in the download area in source or -binary form. For compiling the source code, you need several other -packages, check the links page. You -need a unix like environment for compilation.

+

Jode is available in the download area in source or binary +form. For compiling the source code, you need several other packages, +check the links page. You need a unix like +environment for compilation.

The simplest way to get it, especially for non unix users, is in precompiled form, though. There are two jar archives in the download @@ -17,10 +16,10 @@ packages are already included in the archive.

  • jode-1.1.jar is for JDK 1.2 or better. It should run without any other package.
  • +
    -

    CVS Repository

    - -

    You can get the latest sources from the CVS +

    +

    You can get the latest sources from the CVS repository. Follow the instruction on that page; use jode as modulename. If you want to checkout a specific version you can use the -r option:

    @@ -36,5 +35,4 @@ the configure.in file resides and run
    aclocal && automake -a && autoconf

    Afterwards follow the instruction in the INSTALL file.

    - - +
    \ No newline at end of file diff --git a/jode/doc/faq.php b/jode/doc/faq.htp similarity index 71% rename from jode/doc/faq.php rename to jode/doc/faq.htp index e4d4a46..0de7f09 100644 --- a/jode/doc/faq.php +++ b/jode/doc/faq.htp @@ -1,10 +1,26 @@ - +
    +This is a list of some questions that pop up from time to time. +
    -

    FAQ - Frequently Asked Questions

    +
    -This is a list of some questions that pop up from time to time. +

    Does Jode support Java 5?

    + +

    It does not support generics/vararg method or the new for loop at +the moment. It produces readable code and I think it may even compile +again. But it is not compatible as the generics and varargs +information is not included.

    + +

    Jode crashes with ExceptionHandler order failed

    -

    Decompiler issues

    +

    Try jode-1.1.2pre1 or the latest CVS version. If it still does not +work rewrite jode.flow.TransformExceptionHandlers and +send me the fix :)

    + +

    Since Java 1.4 the format for finally and synchronized blocks +changed again. It was always a very difficult task to reconstruct +finally blocks correctly and the code is huge and very +hard to maintain. With Java 5 it gets even worse.

    The decompiler crashes with a VerifyException, what can I do?

    @@ -13,7 +29,8 @@ information about used classes. See the question about the classpath.

    This could also be caused by malicious bytecode, or because there -is a bug in Jode's verifier.

    +is a bug in Jode's verifier, or because Sun decided to change the +definition of correct bytecode, again.

    What should be included in the classpath?

    @@ -37,7 +54,9 @@ it.

    You should decompile the outermost class (MyClass in this case). The produced code contains the inner class.

    -

    Obfuscator issues

    +
    + +

    What should be included in the classpath?

    @@ -68,5 +87,4 @@ and methods of a class with their type signatures.

    If you are interested in the format of type signatures read the Java Virtual Machine Specification, Chapter 4.3 Descriptors

    - - +
    \ No newline at end of file diff --git a/jode/doc/favicon.xpm b/jode/doc/favicon.xpm new file mode 100644 index 0000000..5c02b83 --- /dev/null +++ b/jode/doc/favicon.xpm @@ -0,0 +1,188 @@ +/* XPM */ +static char * favicon_xpm[] = { +"32 32 153 2", +" c None", +". c #000000", +"+ c #686868", +"@ c #A3A3A3", +"# c #BFBFBF", +"$ c #878787", +"% c #3D3D3D", +"& c #060606", +"* c #171717", +"= c #131313", +"- c #0A0A0A", +"; c #030303", +"> c #090909", +", c #373737", +"' c #414141", +") c #2F2F2F", +"! c #010101", +"~ c #020202", +"{ c #FFFFFF", +"] c #FBFBFB", +"^ c #979797", +"/ c #B1B1B1", +"( c #C6C6C6", +"_ c #ECECEC", +": c #FEFEFE", +"< c #A8A8A8", +"[ c #1E1E1E", +"} c #696969", +"| c #C2C2C2", +"1 c #E4E4E4", +"2 c #EEEEEE", +"3 c #F8F8F8", +"4 c #8F8F8F", +"5 c #ADADAD", +"6 c #EDEDED", +"7 c #CCCCCC", +"8 c #8D8D8D", +"9 c #FDFDFD", +"0 c #E3E3E3", +"a c #EBEBEB", +"b c #F4F4F4", +"c c #F1F1F1", +"d c #E5E5E5", +"e c #F7F7F7", +"f c #E7E7E7", +"g c #D6D6D6", +"h c #6E6E6E", +"i c #F2F2F2", +"j c #656565", +"k c #070707", +"l c #BABABA", +"m c #636363", +"n c #0E0E0E", +"o c #606060", +"p c #262626", +"q c #3A3A3A", +"r c #DADADA", +"s c #8A8A8A", +"t c #2A2A2A", +"u c #A5A5A5", +"v c #FCFCFC", +"w c #434343", +"x c #4A4A4A", +"y c #ACACAC", +"z c #666666", +"A c #161616", +"B c #F6F6F6", +"C c #2E2E2E", +"D c #797979", +"E c #151515", +"F c #616161", +"G c #121212", +"H c #7C7C7C", +"I c #AEAEAE", +"J c #242424", +"K c #DEDEDE", +"L c #A1A1A1", +"M c #FAFAFA", +"N c #C5C5C5", +"O c #F3F3F3", +"P c #101010", +"Q c #BBBBBB", +"R c #0F0F0F", +"S c #F9F9F9", +"T c #494949", +"U c #E8E8E8", +"V c #181818", +"W c #444444", +"X c #A4A4A4", +"Y c #272727", +"Z c #C0C0C0", +"` c #C3C3C3", +" . c #404040", +".. c #080808", +"+. c #868686", +"@. c #050505", +"#. c #0B0B0B", +"$. c #2C2C2C", +"%. c #B3B3B3", +"&. c #4E4E4E", +"*. c #D3D3D3", +"=. c #0D0D0D", +"-. c #8E8E8E", +";. c #747474", +">. c #232323", +",. c #515151", +"'. c #464646", +"). c #5A5A5A", +"!. c #8B8B8B", +"~. c #757575", +"{. c #CECECE", +"]. c #353535", +"^. c #A9A9A9", +"/. c #5B5B5B", +"(. c #E9E9E9", +"_. c #DFDFDF", +":. c #E0E0E0", +"<. c #C7C7C7", +"[. c #D1D1D1", +"}. c #BCBCBC", +"|. c #B9B9B9", +"1. c #252525", +"2. c #B0B0B0", +"3. c #F0F0F0", +"4. c #C1C1C1", +"5. c #E6E6E6", +"6. c #969696", +"7. c #6F6F6F", +"8. c #9D9D9D", +"9. c #3C3C3C", +"0. c #E1E1E1", +"a. c #B2B2B2", +"b. c #B6B6B6", +"c. c #777777", +"d. c #7E7E7E", +"e. c #767676", +"f. c #949494", +"g. c #9F9F9F", +"h. c #D2D2D2", +"i. c #D5D5D5", +"j. c #DDDDDD", +"k. c #EAEAEA", +"l. c #858585", +"m. c #CBCBCB", +"n. c #7D7D7D", +"o. c #474747", +"p. c #202020", +"q. c #5E5E5E", +"r. c #B5B5B5", +"s. c #919191", +"t. c #929292", +"u. c #4F4F4F", +"v. c #141414", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +". . . . . ", +"+ @ # $ % . . . & * = - . . . . ; > , ' ) . . . ! ; ; ; ~ . . ", +"{ { { { ] ^ / ( _ { { : < [ } | 1 2 3 { { { ( 4 5 1 2 2 2 6 7 8 ", +"{ { 9 1 0 0 _ { { { a # ( b { { { c 0 0 d e { { { { a 0 0 0 0 f ", +"{ { g . . . h { i j k . . * l { { m . . ! n o i { : p . . . . q ", +"{ { r s t . u v w . x y z . A B { C . D D E . F { 6 ~ G H H H I ", +"{ { { : J . K L . , ] { M E . N O & P M { Q . R S Q . T M M ] { ", +"{ { { U ~ V 9 W . X { { { Y . Z ` . .{ { U ! ..b +.. @.#.#.$.{ ", +"{ { { %.. &.{ E . *.{ { e =.~ 1 -.. ;.{ { N . >.: ,.. '.).).!.{ ", +"{ { { ~.. $ { P . {.{ { < . ].{ ).. ^.{ { /.. H 9 [ . (.{ { { { ", +"_.:.<.E ! [.{ ' . o 6 }.* ; |.{ 1.. 2.` j ! 1.3.d ! = Z 4.4.5.{ ", +"6.! . . 7.{ { <.n . ; . > 8.{ 2 ! . . . . 9.0.{ a.. . . . . b.{ ", +"7 c.d.l { { { { 1 -.e.f.1 { { a g.g.g.< h.{ { { *.g.g.g.g.g.c { ", +"{ { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { ", +"i.j.M { { { { { { { { { { { { { { { { { { { { { { { { { { { k.l.", +". . R F H l.{.9 { { { { { { { { { { { { { { { ] U m.8 n.+ o.... ", +" . . . . E p.q.~.~.r.(.i.s.).t.[.@ d.u. .v.! . . . . ", +" . . . . ! . . . . . . . . ", +" ", +" ", +" ", +" ", +" ", +" ", +" "}; diff --git a/jode/doc/feedback.php b/jode/doc/feedback.htp similarity index 82% rename from jode/doc/feedback.php rename to jode/doc/feedback.htp index ee5b665..d260c0f 100644 --- a/jode/doc/feedback.php +++ b/jode/doc/feedback.htp @@ -1,6 +1,4 @@ - - -

    Feedback

    +

    You can report bugs to the bug forum.

    @@ -10,5 +8,4 @@ users.sourceforge.net. Please mention jode in the subject.

    There is a mailing list. Check this page for subscription informations.

    - - +
    \ No newline at end of file diff --git a/jode/doc/history.php b/jode/doc/history.htp similarity index 92% rename from jode/doc/history.php rename to jode/doc/history.htp index 9ed1962..f12e608 100644 --- a/jode/doc/history.php +++ b/jode/doc/history.htp @@ -1,6 +1,4 @@ - -

    History

    - +

    Someday I found guavad, a disassembler for java byte code (it does similar things like javap -c). I used it on a class file, and found that it was possible to reconstruct the @@ -19,5 +17,4 @@ now, because it suited best.

    Just for the records: the java code is now more than 50 times bigger than the original perl script and is still growing.

    - - +
    \ No newline at end of file diff --git a/jode/doc/htp.def b/jode/doc/htp.def new file mode 100644 index 0000000..b53a900 --- /dev/null +++ b/jode/doc/htp.def @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    + + +
    +
    diff --git a/jode/doc/index.php b/jode/doc/index.htp similarity index 70% rename from jode/doc/index.php rename to jode/doc/index.htp index 6454670..4952c8d 100644 --- a/jode/doc/index.php +++ b/jode/doc/index.htp @@ -1,20 +1,16 @@ - +

    JODE is a java package containing a decompiler and an -optimizer for java. This package is freely available under the GNU GPL. -New: The bytecode package and the core decompiler is now under -GNU Lesser General Public License, so you can integrate it in your -project.

    +optimizer for java. This package is freely +available under the GNU GPL.

    The decompiler reads in class files and produces something similar to the original java file. Of course this can't be perfect: There is no way to produce the comments or the names of local variables (except when compiled with debuging) and there are often more ways to write the same thing. However, JODE does its job quite -well, so you should give it a try and start the -applet. Jode has support for all constructs of JDK-1.3 including -inner and anonymous classes.

    +well, so you should give it a try and start the +applet.

    The optimizer transforms class files in various ways with can be controlled by a script file. It supports the following @@ -29,14 +25,25 @@ fields

  • Optimizing local variable allocation
  • -

    News

    +
    + +
      -
    • JODE 1.1.1 is out. With support for javac v8 (jdk 1.3).
    • -
    • The license changed to LGPL for the bytecode interface and decompiler.
    • +
    • JODE 1.1 is out. With support for javac v8 (jdk 1.3).
    • +
    • JODE is now hosted by SourceForge.
    • +
    • Now long lines are automatically broken.
    • +
    • Inner and anonymous classes are automatically decompiled.
    • +
    • The optimizer (aka obfuscator) can be customized via a small +config file
    +
    + +
    -

    Known bugs of the decompiler

    +

    The current version has problems try/catch/finally code produced + by java 1.4 compiler. You may try the latest CVS version or pre-release + instead.

    Some jdk1.3 synthetic access functions aren't understood. The produced source contains access$xxx functions, but it still compiles.

    @@ -45,7 +52,9 @@ fields If you have such a problems don't hesitate to issue a bug report. Please include the class file if possible.

    -

    Limitations

    +
    + +

    If not all dependent classes can be found, the verifier (which is run before decompilation starts) may exit with a type error. You @@ -64,4 +73,4 @@ the code should still be compileable. This does especially happen when you compile with `-O' flag and javac has inlined some methods.

    - +
    \ No newline at end of file diff --git a/jode/doc/jode-logo.gif b/jode/doc/jode-logo.gif deleted file mode 100644 index e22ca73..0000000 Binary files a/jode/doc/jode-logo.gif and /dev/null differ diff --git a/jode/doc/jode-logo.png b/jode/doc/jode-logo.png new file mode 100644 index 0000000..ce5e140 Binary files /dev/null and b/jode/doc/jode-logo.png differ diff --git a/jode/doc/jode.htt b/jode/doc/jode.htt new file mode 100644 index 0000000..8c8e281 --- /dev/null +++ b/jode/doc/jode.htt @@ -0,0 +1,67 @@ + + + +Java Optimize and Decompile Environment (JODE) + + + + + + + + + + +
    JODEPowered by SourceForge
    Pages produced with Powered by htp
    Best viewed with Any Browser
    + + + +
    + + + + + + + + + + + + + + + + + diff --git a/jode/doc/license.php b/jode/doc/license.htp similarity index 85% rename from jode/doc/license.php rename to jode/doc/license.htp index 08c9a89..6890496 100644 --- a/jode/doc/license.php +++ b/jode/doc/license.htp @@ -1,6 +1,5 @@ - -

    License

    -

    JODE is Copyright © 1998-2000 by Jochen Hoenicke.

    +

    +

    JODE is Copyright © 1998-2004 by Jochen Hoenicke.

    This program is free software; you can redistribute it and/or modify it under the terms of the without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See the GNU General Public License for more details.

    - +
    diff --git a/jode/doc/links.php b/jode/doc/links.htp similarity index 93% rename from jode/doc/links.php rename to jode/doc/links.htp index 0b9fc00..a73726c 100644 --- a/jode/doc/links.php +++ b/jode/doc/links.htp @@ -1,5 +1,4 @@ - -

    JODE Links

    +

    Other decompilers

    • The Open Directory list
    • @@ -37,7 +36,7 @@ href="http://jedit.standmed.com/plugins/JavaInsight">JavaInsight plugin for
    • A great place for developing free software is SourceForge
    @@ -68,8 +67,9 @@ href="http://jedit.standmed.com/plugins/JavaInsight">JavaInsight plugin for from the GNU Classpath Project into its own package (gnu.java.util.collections). This script is now part of GNU classpath. For your convenience I have put a -precompiled jar file on this server. +precompiled jar +file on this server. - - +
    \ No newline at end of file diff --git a/jode/doc/poweredbyhtp.png b/jode/doc/poweredbyhtp.png new file mode 100644 index 0000000..f261d90 Binary files /dev/null and b/jode/doc/poweredbyhtp.png differ diff --git a/jode/doc/usage.php b/jode/doc/usage.htp similarity index 89% rename from jode/doc/usage.php rename to jode/doc/usage.htp index 2004ea6..8d63d24 100644 --- a/jode/doc/usage.php +++ b/jode/doc/usage.htp @@ -1,37 +1,40 @@ - - +

    On this page:
    Decompiler
       Command Line
       AWT Interface
       Swing Interface
       Java Interface
    Obfuscator
    -*/ ?> -

    Using the Decompiler

    -

    After you have downloaded the jar archive +

    + + +
    +

    After you have downloaded the jar archive put it into your CLASSPATH. The package swingall.jar is also needed if you are using JDK 1.1.

    • Under Windows you have to start a MSDOS session and type something like:
      -set CLASSPATH=C:\download\jode-.jar;C:\swing\swingall.jar
      +set CLASSPATH=C:\download\jode-.jar;C:\swing\swingall.jar
       
    • Under Unix you start a shell and type (for bourne shell): -
      export CLASSPATH=/tmp/jode-.jar:/usr/local/swing/swingall.jar
      +
      export CLASSPATH=/tmp/jode-.jar:/usr/local/swing/swingall.jar
      or for csh: -
      setenv CLASSPATH /tmp/jode-.jar:/usr/local/swing/swingall.jar
      +
      setenv CLASSPATH /tmp/jode-.jar:/usr/local/swing/swingall.jar

    There is also a batch file for windows and a script file for unix, that you can use. You can extract it with the following command:
    -  jar -xvf jode-.jar bin/jode.bat resp. bin/jode
    +  jar -xvf jode-".jar bin/jode.bat resp. bin/jode
     
    Edit the file to adapt it to your paths and put it to a convenient location. +
    -

    Command Line Interface

    +
    The most powerful way to start JODE's decompiler is the command line interface. Some people don't like long command lines; they @@ -51,10 +54,10 @@ If you have installed the batch file/script, you can use it like this:

    AWT Interface

    -The AWT Interface looks exactly like the +The AWT Interface looks exactly like the applet. In fact the applet uses the AWT Interface. You start it -after setting the CLASSPATH (see above), with +after setting the CLASSPATH (see above), with
    java jode.decompiler.Window
    @@ -67,8 +70,12 @@ appear. You can save it via the save button.

    Swing Interface

    For the swing interface you need java version 1.2 or the separately -available swing package (see link -page. You can invoke it with the following command: +available swing package (see link +page. You can invoke it with the following command (JDK1.2 only): +
    +java -jar jode-.jar classes.jar
    +
    +or if you have set the classpath (see above)
     java jode.swingui.Main classes.jar
     resp. jode swi classes.jar
    @@ -95,14 +102,14 @@ class.  Note that the LGPL allows dynamic linking as long as you don't change
     Jode itself.  Please tell me if you use JODE in this way.

    You should ship jode-1.1-embedded.jar with your program. This jar file is -available in the download area. +available in the download area. It works only under JDK 1.2 and above.

    +
    -

    Using the Obfuscator

    - +

    To use the obfuscator you should first create a script file, say myproject.jos. Then you can invoke the -obfuscator with: +obfuscator with:

     java jode.obfuscator.Main myproject.jos
     
    @@ -204,7 +211,7 @@ renamer = new StrongRenamer

    You can also create a renaming table with the same format as the table written by revtable. The entries in the table get precedence over renamer. Entries not in the table will get renamed by the -renamer.

    +renamer.

     table = "translat.tbl"
     
    @@ -215,7 +222,6 @@ needs to get the same name (overloading), and which method names mustn't change (overload of library methods, e.g. nextElement for Enumerations). There are currently two analyzers.

    -
    SimpleAnalyzer
    Straight forward analyzer. It is fast and will remove dead code on method basis.
    @@ -241,4 +247,4 @@ change the bytecode interface.

     post = new LocalOptimizer, new RemovePopAnalyzer
     
    - +
    \ No newline at end of file diff --git a/jode/doc/w3c_ab.png b/jode/doc/w3c_ab.png new file mode 100644 index 0000000..5ac097c Binary files /dev/null and b/jode/doc/w3c_ab.png differ