Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

reading obfuscated code

Posted on 2004-10-28
13
Medium Priority
?
1,200 Views
Last Modified: 2012-08-13
Just out of curiousity, does reading obfuscated code and deobfuscating it manually improve your Java skills? I was just researching obfuscation and was thinking about that, since it seems like a pretty challenging thing (something to pass the time with ;)
0
Comment
Question by:Zyloch
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
  • 2
  • +4
13 Comments
 
LVL 14

Accepted Solution

by:
Tommy Braas earned 180 total points
ID: 12441592
Hmm, if you have too much time on your hands, manually de-obfuscating code might be a 'fun' exercise...;-) For learning/improving Java it would be a pretty bad idea I think!

\t
0
 
LVL 7

Assisted Solution

by:tomboshell
tomboshell earned 164 total points
ID: 12441931
MANUALLY!!!  You simply have too much time on your hands.  The best way to learn is to program, which by your question you have covered.  Have you tried to study the source for some larger projects line TomCat, JUnit, Ant and so on?  Those can be quite instructive, or so I hear...I have not had the time to delve into the source code for those projects.   But it is on my never ending list of things to do if, the imposible happens, and I happen to have time on my hands.

Or if you are in for a challenge look up byte code engeniering.  There are tools to help with that.  At least that sound challenging to me.  
0
 
LVL 11

Assisted Solution

by:cjjclifford
cjjclifford earned 164 total points
ID: 12442340
Obfuscation generally does unsavory things, from a good-practices perspective, so I would say trying to learn a language, and good-practices of programming in that language, by reading obfuscated code would indeed be a bad idea...

Studying source code is not really a good approach, IMO, unless you are searching for solutions to particular problems - you can easily get bogged down with the volume of code, and miss many fine points, etc! Start programming, start coming across the same problems again and again in your own solutions, and then for these look to source codes to see other solutions, or better yet, have a Google for "patterns" - basically a "pattern" is a description of a common problem, and a good approach to solve this problem (approach, not source code - for examples of solutions go to the better Open Source projects...)
0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
LVL 11

Expert Comment

by:cjjclifford
ID: 12442357
sorry, forgot to mention, if you want to try to make reading obsfucated code, run it through one of the many code beautifiers available - this will at least get rid of poor formatting, etc!
You could also run it through a refactoring tool (Eclipse apparently does it very well!)
 
0
 
LVL 21

Assisted Solution

by:MogalManic
MogalManic earned 164 total points
ID: 12442720
A better way to improve your Java skills is to just take the pubic API of the obfuscated jar and reverse enginerr the classes and API yourself.
0
 
LVL 21

Expert Comment

by:MogalManic
ID: 12442732
I have also used the obfuscated source code to figure out the internals of a JAR so that I could write a wrapper class to implement missing or broken functionalities.
0
 
LVL 4

Assisted Solution

by:lcwiding
lcwiding earned 164 total points
ID: 12445183
No, manually, or automatically, deobfuscating Java code will not improve your Java skills.

To my mind, one of the main reasons for that is because there are many things obfucators do that are very difficult, if not impossible, to deobfuscate. One of those is replacing final static variables in the code with the actual literal value.

I would stay away from this approach, and instead look into a good book like Better, Faster, Lighter Java or Effective Java.
0
 
LVL 14

Assisted Solution

by:sudhakar_koundinya
sudhakar_koundinya earned 164 total points
ID: 12451064
I believe to improve ourselves in Java Skills

download open source api from sites like Jakara and sorce forge and try investigating on the API what they did.

Regards
Sudhakar
0
 
LVL 36

Author Comment

by:Zyloch
ID: 12452987
Yep :)

I was just wondering because it sounds like fun :)

Anyways, thanks for all the help. I've gotta go now but be back and accept some of your answers ;)
0
 
LVL 14

Expert Comment

by:sudhakar_koundinya
ID: 12453039
Split the points between guys whom's answer you think is best.

Regards
Sudhakar
0
 
LVL 14

Expert Comment

by:sudhakar_koundinya
ID: 12808219
:)
0

Featured Post

How to Use the Help Bell

Need to boost the visibility of your question for solutions? Use the Experts Exchange Help Bell to confirm priority levels and contact subject-matter experts for question attention.  Check out this how-to article for more information.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Are you developing a Java application and want to create Excel Spreadsheets? You have come to the right place, this article will describe how you can create Excel Spreadsheets from a Java Application. For the purposes of this article, I will be u…
Introduction This article is the first of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article explains our test automation goals. Then rationale is given for the tools we use to a…
Viewers learn about the “for” loop and how it works in Java. By comparing it to the while loop learned before, viewers can make the transition easily. You will learn about the formatting of the for loop as we write a program that prints even numbers…
Video by: Michael
Viewers learn about how to reduce the potential repetitiveness of coding in main by developing methods to perform specific tasks for their program. Additionally, objects are introduced for the purpose of learning how to call methods in Java. Define …
Suggested Courses

604 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