• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 480
  • Last Modified:

Java Decompiler

I have decompiled a java applet (jar) file.  But the results are messed up.  
All the class files are named like a.java, ab.java, ac.java, etc.  The variables inside the java files
are like
        _fld0AA2 = new float[_fld0A9F.length - 1];
        _fld0AA3 = new float[10];
        _fld0AA4 = new float[10];
        _fld0AA5 = new float[160];
        _fld0AA6 = new float[3];
        _fld0AA8 = new float[10];

and the methods are like:
public void _mth066A()
public int _mth064B(byte abyte0[], short aword0[], int i, double d)

I have used
DJ Java Decompiler v.3.11.11.95 and jd-gui-0.3.1.windows and they both display the same results.

I need to be able to see what the real variables are because I am getting compiler errors in statements
like:
 
 switch(jk1._fld0B36)
            {
            case 0: // '\0'
            case 7: // '\007'
            case 26: // '\032'
            case 27: // '\033'
            case 28: // '\034'
                obj = new n(rectangle, ri, jk1, null);
                break;

            case 20: // '\024'
                obj = new n(rectangle, ri, jk1, hj1._mth01C1());
                break;

            case 1: // '\001'
            case 8: // '\b'
            case 17: // '\021'
            case 24: // '\030'
                obj = new ifa(rectangle, ri, jk1);
                break;

            case 3: // '\003'
                obj = new cd(rectangle, ri, jk1);
                break;
.......

obj._fld0102 = jk1._fld0B38;

since the compiler looks like it is just randomly naming fields (setters/getters).  This is causing a problem
going through the case statement because each one of those objects should have the same field
name but does not because the decompiler is randomly naming them.  

Does anyone know of a decompiler I could use that would give me the "real" variable and class names.
I am not sure how old this java code is or what version of java it was compiled on.  
0
justanothercoder
Asked:
justanothercoder
1 Solution
 
afibarraCommented:
It looks like you are trying to decompile an obfuscated code. That's why you are getting "a.java, ab.java, ac.java" files

http://www.informit.com/articles/article.aspx?p=174368
0
 
cmalakarCommented:
Yes, the code is obfuscated, where all the "real" variable/class names will be updated with some other names.
Which makes it difficult to understand.

>> Does anyone know of a decompiler I could use that would give me the "real" variable and class names

Obfuscated code means.. the names are changed in the class files itself. So, the real variable names does not exist,..
And Now.. no decompiler will get you the exact code.

0

Featured Post

2018 Annual Membership Survey

Here at Experts Exchange, we strive to give members the best experience. Help us improve the site by taking this survey today! (Bonus: Be entered to win a great tech prize for participating!)

Tackle projects and never again get stuck behind a technical roadblock.
Join Now