|Powered by |
Best viewed with
|Home | Project page | Applet | Download | FAQ | Feedback | Documentation | License | History | Links | Blue Sky|
The class isn't verifiable, probably because there is not enough 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.
Jode needs to know the full class hierarchie to guess the types. This includes not only the classes in the program, but also the libraries used by the java program, even the Java runtime library. You should set the classpath to include all these classes.
If you don't specify the classpath on the command line, Jode uses the same as your Java Virtual Machine.
As last resort, if Jode can't find a class in the classpath it uses reflection to ask the Virtual Machine. This works quite well, but loading classes can have side effects, e.g. when AWT classes are loaded, an AWT thread is created, even though Jode doesn't need it.
You should decompile the outermost class (
this case). The produced code contains the inner class.
The program, all libraries, the Java runtime library. Don't omit a library even when you don't want to obfuscate it.
The most common mistake is to preserve a class. In most cases this is not what you want. This only makes sure the class won't be renamed, it doesn't prevent it from being stripped. Instead you should preserve methods and constructors. The constructor is just a method with the special name <init>.
Another common mistake is to omit the type signature, e.g. to preserve Class.main instead of Class.main.([Ljava/lang/String;)V. That doesn't work. If you don't want to care about the format of the type signature use a wildcard as in Class.main.*.
The type signature is a machine readable representation of a java type that is used all over in java bytecode. The JDK ships a command named javap. With java -s you can lists the fields 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