diff --git a/jode/NEWS b/jode/NEWS index f91e390..9fb9f6b 100644 --- a/jode/NEWS +++ b/jode/NEWS @@ -3,11 +3,11 @@ New in 1.0.93 * replaced a bash specific construct in acinclude.m4 * fixed a funny bug: string += "1" was decompiled as string++ * main class of decompiler is now jode.decompiler.Main -- better memory usage in decompiler -- fixed a bug in ConstantAnalyzer (produced wrong code) -- swingui also uses getopt. -- web pages updated. -- javadoc api added. +* fixed a bug in ConstantAnalyzer (obfuscator) (produced wrong code) +* fixed more bugs in obfuscator +* better memory usage in decompiler +* fixed a bug in decompiler (couldn't handle nop instruction) +* web pages updated. New in 1.0.92 * option --pretty works again diff --git a/jode/README b/jode/README index 5c16a3c..16c3d0a 100644 --- a/jode/README +++ b/jode/README @@ -1,11 +1,12 @@ -JODE (Java Obfuscator/DEcompiler) +JODE (Java Optimize and Decompile Environment) This is a decompiler and optimizer 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 the java files were compiled with `-g') and there are often more -ways to write the same thing. But jode does its job quite well. +time. The decompiler 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 the java files were compiled with `-g') and +there are often more ways to write the same thing. But jode does its +job quite well. Please note that most software licenses forbid to decompile class files. Use this decompiler only, if you have legal rights to @@ -70,8 +71,8 @@ You need java jdk1.2 or above, and the gnu getopt package. You should also have the jode-x.x.xx.jar file. Read INSTALL how to compile it yourself. -Jode also works with jdk1.1, you need the sun collection classes and -swing in that case and you have to compile the jar-file yourself. +Jode also works with jdk1.1, but you need the sun collection classes +and swing in that case. Here are some URLs for the tools and packages you may need: @@ -98,13 +99,13 @@ jode-x.x.xx.jar, the gnu getopt package and the sun collection package for 1.1. For the swingui program you also need swing in you classpath. You can then decompile a class file with: - java jode.Decompiler --classpath jarfile1.jar,jarfile2.jar org.package.Class + java jode.decompiler.Main --classpath jarfile1.jar,jarfile2.jar org.package.Class For a graphical user interface based on swing try: java jode.swingui.Main --classpath jarfile1.jar The obfuscator/deobfuscator can be run with: - java jode.obfuscator.Main --script obfuscation.script + java jode.obfuscator.Main obfuscation.jos See XXXX for more information about the script syntax. diff --git a/jode/TODO b/jode/TODO index 9c7b59a..96163d2 100644 --- a/jode/TODO +++ b/jode/TODO @@ -1,14 +1,13 @@ This is a list of features, that would be nice to have: Decompiler: - - deinline inlined methods. + - outline inlined methods. - remove string decrypt method. - remove synthetic methods if and only if all calls to them are resolved. ~ handle try catch more thouroughly/safely. ~ decompile jode.jvm.Interpreter (hand optimized bytecode) Obfuscator: - - read options from a script. - flow obfuscation/optimization. - warn about Class.forName and list occurences. @@ -25,7 +24,8 @@ User Interface: - list fields/method of selected class. - show decompilation of selected method. - show usage of method/fields. - - syntax highlighting, hyper links etc. (look at java.swing.JEditorPane) + - syntax highlighting, hyper links etc. + (look at java.swing.JEditorPane or at Java Insight) - visual obfuscation/deobfuscation (like klassmaster?, better?) Internal: diff --git a/jode/configure.in b/jode/configure.in index 593e7b5..be63d01 100644 --- a/jode/configure.in +++ b/jode/configure.in @@ -1,7 +1,7 @@ dnl Process this file with autoconf to produce a configure script. AC_INIT() -AM_INIT_AUTOMAKE(jode, 1.0.92) +AM_INIT_AUTOMAKE(jode, 1.0.93) dnl Checks for programs. dnl AC_PROG_CXX @@ -102,13 +102,17 @@ AC_MSG_CHECKING(for collection classes) JODE_CHECK_CLASS(java.util.Set, $CLASSPATH:$CLASSLIB, [ COLLECTIONS="java.util" COLLECTIONEXTRA="java.lang" ], - [ JODE_CHECK_CLASS(com.sun.java.util.collections.Set, $CLASSPATH:$CLASSLIB, - [ COLLECTIONS="com.sun.java.util.collections" - COLLECTIONEXTRA="com.sun.java.util.collections" ], - [ AC_MSG_RESULT(no) - AC_MSG_ERROR(You need the Java 1.2 collection classes in your classpath) - ]) - ] ) + [ JODE_CHECK_CLASS(org.gnu.java.util.collections.Set, $CLASSPATH:$CLASSLIB, + [ COLLECTIONS="org.gnu.java.util.collections" + COLLECTIONEXTRA="org.gnu.java.util.collections" ], + [ JODE_CHECK_CLASS(com.sun.java.util.collections.Set, $CLASSPATH:$CLASSLIB, + [ COLLECTIONS="com.sun.java.util.collections" + COLLECTIONEXTRA="com.sun.java.util.collections" ], + [ AC_MSG_RESULT(no) + AC_MSG_ERROR(You need the Java 1.2 collection classes in your classpath) + ]) + ]) + ]) AC_MSG_RESULT($COLLECTIONS) AC_SUBST(COLLECTIONS) AC_SUBST(COLLECTIONEXTRA)