diff --git a/jode/jode-applet.html b/jode/jode-applet.html deleted file mode 100644 index 278effc..0000000 --- a/jode/jode-applet.html +++ /dev/null @@ -1,39 +0,0 @@ - -
-:-)
/usr/lib/java
.
-For other installations you have to adopt the paths. Also I use the
-bourne shell syntax.
-
-java.*
class files.
--export CLASSPATH=$HOME/jode_cls.zip:$HOME/download:/usr/lib/java/lib/classes.zip --
-java jode.JodeWindow --
jode.JodeWindow
and
- you may push start immediately to decompile this class.
-.class
file, enter
- the name of the file without .class
extension and
- push the start button. Change the class path if it doesn't point
- to the right directory.
--java jode.Decompiler --and get a list of the supported parameters. To decompile the whole -decompiler you can use these magic lines: -
-mkdir src -CLASSPATH=jode_cls.zip java jode.Decompiler --dest src \ - `unzip -v jode_cls.zip|grep .class|cut -c59-|sed s/.class//|sed s?/?.?g` -- -
-CLASSPATH=jode_cls.zip java jode.Obfuscator -- -As a hint, to obfuscate the obfuscator use the following command line: -
-CLASSPATH=jode_cls.zip java jode.Obfuscator \ - -cp jode_cls.zip:/usr/lib/java/lib/classes.zip -d obfuscated.zip \ - -weak -revtable translate.tbl -swaporder \ - -preserve jode.Obfuscator.main jode -- -The options
-unique
and -table
can be
-helpful to deobfuscate obfuscated code.
-
-
-
diff --git a/jode/jode-useapplet.html b/jode/jode-useapplet.html
deleted file mode 100644
index 5cf2c5f..0000000
--- a/jode/jode-useapplet.html
+++ /dev/null
@@ -1,49 +0,0 @@
-
-
-
-.class
file or zip
file, you
- want to decompile, to that directory.
-.
' (without quotes).
- You may also specify a zip or jar file here. Note that applet and
- class files must be in the same directory due to security policy. .class
- extension.
-c:\jdk1.2\java
) may differ. java.*
class files.
--set CLASSPATH=c:\temp\jode_cls.zip;c:\temp;c:\jdk1.2\jre\lib\rt.jar --
-c:\jdk1.2\java jode.JodeWindow --
jode.JodeWindow
and
- you may push start immediately to decompile this class.
-.class
file, enter
- the name of the file without .class
extension and
- push the start button. Change the class path if it doesn't point
- to the right directory.
--c:\jdk1.2\java jode.Decompiler --and get a list of the supported parameters. - diff --git a/jode/jode.html b/jode/jode.html deleted file mode 100644 index 435e923..0000000 --- a/jode/jode.html +++ /dev/null @@ -1,124 +0,0 @@ - - - -
This is a decompiler for java I have written in my spare time. It
-takes class-files as input 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 -g
) and there are often more ways to write
-the same thing. But it does its job quite well.
You can donwload the files in zip form.
-The sources contain only the
-java
files, the classes
-contain only the class
files.
I also have a tar.gz file containing only
-the RCS
directories. This is the form I maintain the
-project, but you probably need unix and a few tools to use them.
There are also some snapshots that have new -features like inner and anonymous classes.
- -Click here to browse the files online. -
- - - -I have some simple step by step pages. There are three -possibilities: -
There may be situations, where the code doesn't understand complex -expressions. In this many ugly temporary variables are used, but the -code should still be compileable. This does especially happen when -you compile with `-O' flag and javac has inlined some methods.
- -Sometimes this program may exit with an Exception
or
-produce incorrect code. Most time the code can't be compiled, so that
-it can be easily spotted. If you have one of these problems (except
-those that occur on some of the jode.test
files, I would
-be very interested in a bug report (including the class
-file, if possible).
Sometimes it generates some GOTO
expression and
-labels. This can't be compiled, but shouldn't happen any more with
-javac or jikes.
It doesn't handle inner and anonymous classes, yet. You can
-decompile them separately, though (use `+$
' switch under
-jikes), but there is a bug in javac, so that a final variable is twice
-initialized. If you encounter this problem just remove the doubled
-line by hand.
New! The latest snapshot can handle -inner and anonymous classes.
- - -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
-original java code. First I did it by hand on some small routines,
-but I soon realized that it was a rather stupid task, and that I could
-write a perl
script
-that does the same. At the end of the next day I had a working
-decompiler.
Now while it was working, it was not easy to use. You had to
-decompile the code first with a disassembler, cut the method, you
-wanted to decompile and then run the perl script on it. So I decided
-to get some information of the class files and do this all
-automatically. I decided to write it in java
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.
- -This code is under GNU GPL. That basically means, that you can copy -or modify this code, as long as you put all your modification under -the GPL again. Look -here for the complete license.
- --http://www.informatik.uni-oldenburg.de/~delwi/jode/jode.html, last -updated on 17-Jun-1999.
- - - diff --git a/jode/jode/GlobalOptions.java b/jode/jode/GlobalOptions.java deleted file mode 100644 index 727271a..0000000 --- a/jode/jode/GlobalOptions.java +++ /dev/null @@ -1,100 +0,0 @@ -/* GlobalOptions Copyright (C) 1999 Jochen Hoenicke. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but 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. - * - * You should have received a copy of the GNU General Public License - * along with this program; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - * - * $Id$ - */ - -package jode; -import java.io.PrintWriter; -import java.util.StringTokenizer; - -public class GlobalOptions { - public final static String version = "1.0 snapshot 19990629"; - public final static String email = "jochen@gnu.org"; - public final static String copyright = - "Jode (c) 1998,1999 Jochen Hoenicke <"+email+">"; - public final static String URL = - "http://www.informatik.uni-oldenburg.de/~delwi/jode/jode.html"; - - public static PrintWriter err = new PrintWriter(System.err, true); - public static int verboseLevel = 0; - public static int debuggingFlags = 0; - - public static final int DEBUG_BYTECODE = 0x001; - public static final int DEBUG_VERIFIER = 0x002; - public static final int DEBUG_TYPES = 0x004; - public static final int DEBUG_FLOW = 0x008; - public static final int DEBUG_INOUT = 0x010; - public static final int DEBUG_ANALYZE = 0x020; - public static final int DEBUG_LVT = 0x040; - public static final int DEBUG_CHECK = 0x080; - public static final int DEBUG_LOCALS = 0x100; - public static final int DEBUG_CONSTRS = 0x200; - public static final int DEBUG_INTERPRT = 0x400; - - public static final String[] debuggingNames = { - "bytecode", "verifier", "types", "flow", - "inout", "analyze", "lvt", "check", "locals", - "constructors", "interpreter" - }; - - public static void usageDebugging() { - err.println("Debugging option: --debug=flag1,flag2,..."); - err.println("possible flags:"); - err.println("\tbytecode " + - "show bytecode, as it is read from class file."); - err.println("\tverifier " + - "show result of bytecode verification."); - err.println("\ttypes " + - "show type intersections"); - err.println("\tflow " + - "show flow block merging."); - err.println("\tanalyze " + - "show analyzation order of flow blocks."); - err.println("\tinout " + - "show T1/T2 in/out set analysis."); - err.println("\tlvt " + - "dump LocalVariableTable."); - err.println("\tcheck " + - "do time consuming sanity checks."); - err.println("\tlocals " + - "dump local merging information."); - err.println("\tconstructors " + - "dump constructor simplification."); - err.println("\tinterpreter " + - "debug execution of interpreter."); - System.exit(0); - } - - public static void setDebugging(String debuggingString) { - if (debuggingString.length() == 0 || debuggingString.equals("help")) - usageDebugging(); - - StringTokenizer st = new StringTokenizer(debuggingString, ","); - next_token: - while (st.hasMoreTokens()) { - String token = st.nextToken().intern(); - for (int i=0; i