Solved

Look at this Java Decompiler Problem!

Posted on 2002-04-02
14
188 Views
Last Modified: 2011-10-03
// FrontEnd Plus GUI for JAD
// DeCompiled : a.class

try {
       a1.pack();
       a1._mthtry(); //This Method Doesm't Exit At All!

       a1.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
} finally {
       a1.dispose();
}

The above code piece was decompiled by the Latest version of JAD/FrontEnd Plus. Actually, the methods begin with an underline char "_" (a1._mthtry(), e.g.) don't exit in the refered class (a1 here, e.g.), so this classes can't be compiled back into a .class after modification.

But it seems somebody else can decompile it successfully, what's the problem with the tools I am using? Or he use another better tool?

Could anyone tell me?
0
Comment
Question by:wyuanzheng
  • 6
  • 3
  • 2
  • +3
14 Comments
 
LVL 3

Expert Comment

by:shyamkumarreddy
Comment Utility
Wyuanzheng,
I have some info for you. After you decompile your class file to java. It won't be 100 Percent back to java. And i don't think all compilers do that. If you can do that what is the way to hide your source right.

And the source which u get from class file is not the format in which u get it in java. It will be in some format and it is different for each decompilers and very very difficult to understand the logic and code.

And at the same time. There are some obsfucator for hiding the code also.

These are some info for you abt decompilers.
For more info look into sun for obsfucator.
Shyam
0
 
LVL 9

Expert Comment

by:Ovi
Comment Utility
Try JODE. Serach at google and you will find references to the opensource project hosted by sourceforge
0
 
LVL 9

Expert Comment

by:Ovi
Comment Utility
0
 

Author Comment

by:wyuanzheng
Comment Utility
Sometimes, I see the decompiled class file contains some reserved words like "try", "null", "catch" as the Method name or Variable.

e.g.:

a1.try(a2.null);

//try() is a Method, null is an variable in a2 class

So, how to play with it?
0
 
LVL 9

Accepted Solution

by:
Ovi earned 50 total points
Comment Utility
This means the class was obfuscated using a good obfuscating program. Normally you cannot solve this kind of problems. You could try to study the resulted sourcecode and fix'it if is understandable enough.
0
 

Author Comment

by:wyuanzheng
Comment Utility
If I am required to decompile all the classes, and modify all the reference of these methods/variables, I must be mad! Any way else?
0
 

Expert Comment

by:alramanathan
Comment Utility
U can try Decafe Pro which will decompile java Classes and but not in the Same format
0
How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

 

Expert Comment

by:alramanathan
Comment Utility
It is available in http://decafe.hypermart.net/
0
 

Author Comment

by:wyuanzheng
Comment Utility
decafe actually use JAD.
So the result will be the same with that decompiled by FrontEnd Plus. Best of all is FrontEnd is free while Decafe cost some.
0
 
LVL 9

Expert Comment

by:Ovi
Comment Utility
Yes, you have right, is madness to change a obfuscate class. I don't think you have alternative solutions (perhaps only searching the web for another application like one you want to decompile).
0
 
LVL 9

Expert Comment

by:Ovi
Comment Utility
Yes, you have right, is madness to change a obfuscate class. I don't think you have alternative solutions (perhaps only searching the web for another application like one you want to decompile).
0
 
LVL 9

Expert Comment

by:Ovi
Comment Utility
Yes, you have right, is madness to change a obfuscate class. I don't think you have alternative solutions (perhaps only searching the web for another application like one you want to decompile).
0
 
LVL 9

Expert Comment

by:Venci75
Comment Utility
No comment has been added lately, so it's time to clean up this TA.
I will leave a recommendation in the Cleanup topic area that this question is:
Answered by: Ovi
Please leave any comments here within the next seven days.
 
PLEASE DO NOT ACCEPT THIS COMMENT AS AN ANSWER!
 
Venci75
EE Cleanup Volunteer
0
 

Expert Comment

by:SpideyMod
Comment Utility
per recommendation

SpideyMod
Community Support Moderator @Experts Exchange
0

Featured Post

Highfive Gives IT Their Time Back

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

INTRODUCTION Working with files is a moderately common task in Java.  For most projects hard coding the file names, using parameters in configuration files, or using command-line arguments is sufficient.   However, when your application has vi…
Introduction This article is the last of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article covers our test design approach and then goes through a simple test case example, how …
This video teaches viewers about errors in exception handling.
This tutorial explains how to use the VisualVM tool for the Java platform application. This video goes into detail on the Threads, Sampler, and Profiler tabs.

744 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now