Learn how to download applets and decompile Java class files - Part 1
Written by
Developer's Daily Java Education Center
Introduction
Before starting, I must admit that for a long while I treated this topic
by burying my head in the sand. The thought that people around the
world could decompile my Java applets and applications was something I
didn't think about, or didn't want to think about. But then one day,
as the Biscuit on the television show Ally McBeal might say, I became
"troubled".
I'd like to say that decompiling Java applets is hard. The fact
is that there's nothing magical, mystical, or even difficult about decompiling
Java classes. In this series of articles you can learn the exact steps
needed to download Java class files, and then decompile
the Java class code - turning the Java binary code back into the original source code.
Why write this Java article?
We decided to create this article for two reasons:
-
First, we're a Java educational center. Telling you the bad things about
Java as well as the good is also educational. Whether it's bad or good, it is truth, and people can do this.
-
Second, and more importantly, if you know how to decompile Java classes you can
also learn how to try stop it (if you're interested in stopping it).
How to download a Java class file from an applet
If you see an applet that you like, downloading the class file(s) for
that applet is generally pretty easy. Here are the steps:
The step-by-step process
-
First, when you see an applet that you like, make sure you're looking at
that applet in your browser (Netscape or Internet Explorer).
-
With the applet in your browser window, click on View | Page Source
(Netscape 4.x), or View | Document Source (Netscape 3.x),
or View | Source (IE 3.x) from the pull-down menu in your
browser. I don't have a copy of IE 4.x with me at this time, but
I think you get the idea.
-
Next, search for the text string "<applet" or "<APPLET"
in the source code for that page. The idea is to find the beginning
of the <APPLET ...> tag in the HTML source. This tag
will tell you where the Java class file is located.
-
When you find the applet tag, look for the name of the class file being
invoked for the the applet. The tag will usually look like this:
<APPLET CODE="MyApplet.class" WIDTH=350 HEIGHT=200></APPLET>
-
This tells you that the binary file MyApplet.class is located
in the same directory as the HTML file. Downloading the class file
is very simple. Go back to your browser, and replace the name of
the HTML file you're viewing with the name of the class file in the field
where you'd normally type the URL.
-
Hit the <Enter> key. Each browser behaves a little
differently, but in general they'll prompt you to ask where you'd like
to download the file to on your local filesystem. Store the class
file wherever you'd like. (Note: If the browser tries to rename the
file with a different filename extension like ".exe", just change the extension
to ".class" before saving it.)
A step-by-step example
That's all you have to do. Does it seem too easy? Try it
on our site. Here's how to download the class file for our popular
AnimatedAd applet.
-
Point your browser to "http://www.DevDaily.com/java/applets/AnimatedAd/AnimatedAd.shtml".
-
Assuming you're using Netscape 4.x, click on View | Page Source.
-
Search for the text string "<applet" or "<APPLET"
in the source code for that page by hitting <Ctrl>F
in the viewing window, then entering the string. You'll find that
the applet tag shows that the AnimatedAd.class file is in the
same directory as the HTML file. There are no directory paths preceding
the string "AnimatedAd.class".
-
Close you're viewing window and go back to your browser. In the browser's
Location: field, replace the name AnimatedAd.shtml with the name
AnimatedAd.class. The URL should now be "http://www.DevDaily.com/java/applets/AnimatedAd/AnimatedAd.class".
-
Hit the <Enter> key. Netscape prompts you by asking
where you'd like to save the file. Save it wherever you'd like, or
cancel the process. Remember to rename the extension to ".class"
if Netscape changes it to ".exe".
The process can get a little more complicated if the applet author uses
a "CODEBASE" parameter with the <APPLET> tag, but
this only means that they've stored the applet in a different directory.
Just include any directory information you see in the URL tag when you
replace the .html filename with the .class filename.
The process also gets more complicated if the author uses more than
one class file to create their applet. For instance, our AnimatedAd
applet requires a helper class named GetAppletParameter.class.
Unfortunately, you won't know this until you decompile the AnimatedAd.class
file.
What's next
In our next article, we'll show you how to
decompile the Java class
file after you've downloaded it to your computer system. Decompiling
the code turns the Java class file (a binary file) into a Java source code
file, meaning you can look at the source code an author used to generate
their applet or application.
Return to our Developer's Daily Pure Java Education Center
Return to our Developer's Daily Home Page
(Editor's Note: The process of decompiling Java class files belonging to other
businesses or individuals may be illegal in your city, state, or country.
Frankly, I don't know for sure, because, to coin a phrase from Star Trek's
(TM) Doctor McCoy, "I'm an editor,
not a lawyer." In any case, this series of articles is not written to
encourage that practice. These articles are presented only so you can
learn to protect your own Java class files from reverse engineering.)
What's Related
Copyright 1998-2009 Alvin Alexander, devdaily.com
All Rights Reserved.