git-svn-id: https://svn.code.sf.net/p/jode/code/trunk@1169 379699f6-c40d-0410-875b-85095c16579ebranch_1_1
parent
7e6a592c69
commit
cf5477df8a
@ -1,5 +1,12 @@ |
||||
## Input file for automake to generate the Makefile.in used by configure
|
||||
|
||||
EXTRA_DIST = \
|
||||
jode.html jode-applet.html jode-obfuscator.html jode-unix.html \
|
||||
jode-useapplet.html jode-win.html
|
||||
applet.html.in \ |
||||
download.html.in \ |
||||
frame.html \ |
||||
history.html \ |
||||
jode.html \ |
||||
license.html \ |
||||
usage.html \ |
||||
myproject.jos \ |
||||
jode-logo.gif |
||||
|
@ -0,0 +1,95 @@ |
||||
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN"> |
||||
<html> |
||||
<head> |
||||
<title>Java Optimize and Decompile Environment (JODE)</title> |
||||
<meta name="robots" content="noindex"> |
||||
<meta name="date" content="1999-10-24"> |
||||
</head> |
||||
|
||||
<body> |
||||
<table cellpadding=4 cellspacing=1 width=100%> |
||||
<tr> |
||||
<td></td> |
||||
<td> <img src="jode-logo.gif" alt="JODE" width=286 height=110></td> |
||||
</tr> |
||||
<tr> |
||||
<td valign="top"> |
||||
<B><a href="http://www.informatik.uni-oldenburg.de/~delwi">Homepage</a></B> |
||||
<br><br> |
||||
<a href="jode.html"> |
||||
<B>Jode</B></a> |
||||
<ul> |
||||
<li>Test It Online</li> |
||||
<li><a href="download.html">Download</a></li> |
||||
<li><a href="usage.html">Usage</a></li> |
||||
<li><a href="license.html">License</a></li> |
||||
<li><a href="history.html">History</a></li> |
||||
</ul> |
||||
</td> |
||||
<td> |
||||
<h1>The <i>JODE</i> Applet</h1> |
||||
|
||||
<applet code="jode/JodeApplet.class" archive="jode-applet.jar" width=540 height=400> |
||||
<param name=classpath |
||||
value="http://www.informatik.uni-oldenburg.de/~mw/plasma.jar"> |
||||
<param name=class value="PlasmaApplet"> |
||||
</applet><br><br>http://www.informatik.uni-oldenburg.de |
||||
|
||||
Press the start button to decompile <a |
||||
href="http://www.informatik.uni-oldenburg.de/~mw/">Michael</a>'s <a |
||||
href="http://www.informatik.uni-oldenburg.de/~mw/plasma">Plasma |
||||
applet</a>. You may change the classpath and class name to point to a |
||||
class file of your choice. But note that most browsers doesn't allow |
||||
loading files from a different server.<br><br> |
||||
|
||||
Save probably doesn't work, because it is forbidden by the browser.<br><br> |
||||
|
||||
You may give multiple entries in the class path field separated by a |
||||
comma. The components may be local or remote zip or jar files or |
||||
directories. Note that browsers forbid accesses to different hosts or |
||||
local files that are not in a subdirectory of the applet |
||||
directory.<br><br> |
||||
|
||||
|
||||
<h1>Removing security restrictions with Internet Explorer</h1> |
||||
|
||||
<p>This information was submitted by <a |
||||
href="mailto:PopescuM@health.missouri.edu">Mihail Popescu |
||||
<PopescuM@health.missouri.edu></a>. Please note that this will |
||||
<i>give all applets on our web server full access to your computer</i>, |
||||
so use it at your own risk.</p> |
||||
|
||||
<p>Go to the View/Internet Options... dialog<br> |
||||
Select the "Security" tab</p> |
||||
<ul> |
||||
<li>Set "Zone:" to "Trusted sites zone"</li> |
||||
<li>Click "Add Sites..." |
||||
<ul><li>Add http://www.informatik.uni-oldenburg.de</li> |
||||
<li>Uncheck "Requires server verificaton..."</li> |
||||
<li>Click "OK"</li> |
||||
</ul></li> |
||||
<li>Check "Custom (for expert users)"</li> |
||||
<li>Click "Settings..." |
||||
<ul><li>Under Java/Java permissions, check "Custom"</li> |
||||
<li>Click "Java Custom Settings" |
||||
<ul><li>Select "Edit Permissions" tab</li> |
||||
<li>Under "Unsigned Content"/"Run Unsigned Content", make sure |
||||
"Run in sandbox" is checked and then check all the "Enable" |
||||
buttons under "Additional Unsigned Permissions"</li> |
||||
<li>Click "OK"</li> |
||||
</ul></li> |
||||
<li>Click "OK"</li> |
||||
</ul></li> |
||||
<li>Click "OK"</li> |
||||
</ul> |
||||
</td> |
||||
</table> |
||||
|
||||
<hr> |
||||
|
||||
<p><A HREF="mailto:Jochen.Hoenicke@Informatik.Uni-Oldenburg.DE"> |
||||
http://www.informatik.uni-oldenburg.de/~delwi/jode/applet.html</A>, last |
||||
updated on <em>24-Okt-1999</em>.</p> |
||||
|
||||
</body> |
||||
</html> |
@ -0,0 +1,95 @@ |
||||
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN"> |
||||
<html> |
||||
<head> |
||||
<title>Java Optimize and Decompile Environment (JODE)</title> |
||||
<meta name="robots" content="noindex"> |
||||
<meta name="date" content="1999-10-24"> |
||||
</head> |
||||
|
||||
<body> |
||||
<table cellpadding=4 cellspacing=1 width=100%> |
||||
<tr> |
||||
<td></td> |
||||
<td> <img src="jode-logo.gif" alt="JODE" width=286 height=110></td> |
||||
</tr> |
||||
<tr> |
||||
<td valign="top"> |
||||
<B><a href="http://www.informatik.uni-oldenburg.de/~delwi">Homepage</a></B> |
||||
<br><br> |
||||
<a href="jode.html"> |
||||
<B>Jode</B></a> |
||||
<ul> |
||||
<li>Test It Online</li> |
||||
<li><a href="download.html">Download</a></li> |
||||
<li><a href="usage.html">Usage</a></li> |
||||
<li><a href="license.html">License</a></li> |
||||
<li><a href="history.html">History</a></li> |
||||
</ul> |
||||
</td> |
||||
<td> |
||||
<h1>The <i>JODE</i> Applet</h1> |
||||
|
||||
<applet code="jode/JodeApplet.class" archive="jode-applet.jar" width=540 height=400> |
||||
<param name=classpath |
||||
value="http://www.informatik.uni-oldenburg.de/~mw/plasma.jar"> |
||||
<param name=class value="PlasmaApplet"> |
||||
</applet><br><br>http://www.informatik.uni-oldenburg.de |
||||
|
||||
Press the start button to decompile <a |
||||
href="http://www.informatik.uni-oldenburg.de/~mw/">Michael</a>'s <a |
||||
href="http://www.informatik.uni-oldenburg.de/~mw/plasma">Plasma |
||||
applet</a>. You may change the classpath and class name to point to a |
||||
class file of your choice. But note that most browsers doesn't allow |
||||
loading files from a different server.<br><br> |
||||
|
||||
Save probably doesn't work, because it is forbidden by the browser.<br><br> |
||||
|
||||
You may give multiple entries in the class path field separated by a |
||||
comma. The components may be local or remote zip or jar files or |
||||
directories. Note that browsers forbid accesses to different hosts or |
||||
local files that are not in a subdirectory of the applet |
||||
directory.<br><br> |
||||
|
||||
|
||||
<h1>Removing security restrictions under Internet Explorer</h1> |
||||
|
||||
<p>This information was submitted by <a |
||||
href="mailto:PopescuM@health.missouri.edu">Mihail Popescu |
||||
<PopescuM@health.missouri.edu></a>. Please note that this will |
||||
<i>give all applets on our web server full access to your computer</i>, |
||||
so use it at your own risk.</p> |
||||
|
||||
<p>Go to the View/Internet Options... dialog<br> |
||||
Select the "Security" tab</p> |
||||
<ul> |
||||
<li>Set "Zone:" to "Trusted sites zone"</li> |
||||
<li>Click "Add Sites..." |
||||
<ul><li>Add http://www.informatik.uni-oldenburg.de</li> |
||||
<li>Uncheck "Requires server verificaton..."</li> |
||||
<li>Click "OK"</li> |
||||
</ul></li> |
||||
<li>Check "Custom (for expert users)"</li> |
||||
<li>Click "Settings..." |
||||
<ul><li>Under Java/Java permissions, check "Custom"</li> |
||||
<li>Click "Java Custom Settings" |
||||
<ul><li>Select "Edit Permissions" tab</li> |
||||
<li>Under "Unsigned Content"/"Run Unsigned Content", make sure |
||||
"Run in sandbox" is checked and then check all the "Enable" |
||||
buttons under "Additional Unsigned Permissions"</li> |
||||
<li>Click "OK"</li> |
||||
</ul></li> |
||||
<li>Click "OK"</li> |
||||
</ul></li> |
||||
<li>Click "OK"</li> |
||||
</ul> |
||||
</td> |
||||
</table> |
||||
|
||||
<hr> |
||||
|
||||
<p><A HREF="mailto:Jochen.Hoenicke@Informatik.Uni-Oldenburg.DE"> |
||||
http://www.informatik.uni-oldenburg.de/~delwi/jode/applet.html</A>, last |
||||
updated on <em>24-Okt-1999</em>.</p> |
||||
|
||||
</body> |
||||
</html> |
@ -0,0 +1,87 @@ |
||||
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN"> |
||||
<html> |
||||
<head> |
||||
<title>Java Optimize and Decompile Environment (JODE)</title> |
||||
<meta name="robots" content="noindex"> |
||||
<meta name="date" content="1999-10-24"> |
||||
</head> |
||||
|
||||
<body> |
||||
<table cellpadding=4 cellspacing=1 width=100%> |
||||
<tr> |
||||
<td></td> |
||||
<td> <img src="jode-logo.gif" alt="JODE" width=286 height=110></td> |
||||
</tr> |
||||
<tr> |
||||
<td valign="top"> |
||||
<B><a href="http://www.informatik.uni-oldenburg.de/~delwi">Homepage</a></B> |
||||
<br><br> |
||||
<a href="jode.html"> |
||||
<B>Jode</B></a> |
||||
<ul> |
||||
<li><a href="applet.html">Test It Online</a></li> |
||||
<li>Download</li> |
||||
<li><a href="usage.html">Usage</a></li> |
||||
<li><a href="license.html">License</a></li> |
||||
<li><a href="history.html">History</a></li> |
||||
</ul> |
||||
</td> |
||||
<td> |
||||
<h2>Download</h2> |
||||
The simplest way is to get it in precompiled form. I have two jar |
||||
archives: |
||||
|
||||
<ul> |
||||
<li><a href="jode-@VERSION@-1.1.jar">jode-@VERSION@-1.1.jar</a> is for |
||||
JDK 1.1. It already contains gnu.getopt, but you need to |
||||
download the <a |
||||
href="http://java.sun.com/beans/infobus/#DOWNLOAD_COLLECTIONS">collection |
||||
classes</a>. If you want to use the swing interface, you have to |
||||
download <a href="http://java.sun.com/products/jfc/index.html#download-swing">swing</a> separately. </li> <li><a |
||||
href="jode-@VERSION@-1.2.jar">jode-@VERSION@-1.2.jar</a> is for |
||||
JDK 1.2. It already contains gnu.getopt, so you don't need any |
||||
other package.</li> |
||||
</ul> |
||||
|
||||
<a href="jode-@VERSION@.tar.gz">jode-@VERSION@.tar.gz</a> is the source |
||||
code. You need many unix tools to compile this file. It also works |
||||
under windows with <a |
||||
href="http://sourceware.cygnus.com/cygwin/">cygwin</a> and unzip.</li> |
||||
|
||||
<h2>Other packages you may need</h2> |
||||
|
||||
<dl> |
||||
<dt>CYGWIN (unix tools for win95/NT)</dt> |
||||
<dd> |
||||
<a href="http://sourceware.cygnus.com/cygwin/">http://sourceware.cygnus.com/cygwin/</a> |
||||
</dd> |
||||
<dt>JDK 1.1:</dt> |
||||
<dd> |
||||
<a href="http://java.sun.com/products/jdk/1.1/index.htm">http://java.sun.com/products/jdk/1.1/index.htm</a> |
||||
</dd> |
||||
<dt>Collection classes and Swing for JDK 1.1:<dt> |
||||
<dd> |
||||
<a href="http://java.sun.com/beans/infobus/#DOWNLOAD_COLLECTIONS">http://java.sun.com/beans/infobus/#DOWNLOAD_COLLECTIONS</a> |
||||
<a href="http://java.sun.com/products/jfc/index.html#download-swing">http://java.sun.com/products/jfc/index.html#download-swing</a> |
||||
</dd> |
||||
<dt>JDK 1.2:</dt> |
||||
<dd> |
||||
<a href="http://java.sun.com/products/jdk/1.2/index.html">http://java.sun.com/products/jdk/1.2/index.html</a> |
||||
</dd> |
||||
<dt>Getopt:</dt> |
||||
<dd> |
||||
<a href="http://www.urbanophile.com/arenn/hacking/download.html#getopt">http://www.urbanophile.com/arenn/hacking/download.html#getopt</a> |
||||
</dd> |
||||
</dl> |
||||
</td> |
||||
</table> |
||||
|
||||
<hr> |
||||
|
||||
<p><A HREF="mailto:Jochen.Hoenicke@Informatik.Uni-Oldenburg.DE"> |
||||
http://www.informatik.uni-oldenburg.de/~delwi/jode/download.html</A>, last |
||||
updated on <em>24-Okt-1999</em>.</p> |
||||
|
||||
</body> |
||||
</html> |
||||
|
@ -0,0 +1,59 @@ |
||||
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN"> |
||||
<html> |
||||
<head> |
||||
<title>Java Optimize and Decompile Environment (JODE)</title> |
||||
<meta name="robots" content="noindex"> |
||||
<meta name="date" content="1999-10-24"> |
||||
</head> |
||||
|
||||
<body> |
||||
<table cellpadding=4 cellspacing=1 width=100%> |
||||
<tr> |
||||
<td></td> |
||||
<td> <img src="jode-logo.gif" alt="JODE" width=286 height=110></td> |
||||
</tr> |
||||
<tr> |
||||
<td valign="top"> |
||||
<B><a href="http://www.informatik.uni-oldenburg.de/~delwi">Homepage</a></B> |
||||
<br><br> |
||||
<a href="jode.html"> |
||||
<B>Jode</B></a> |
||||
<ul> |
||||
<li><a href="applet.html">Test It Online</a></li> |
||||
<li><a href="download.html">Download</a></li> |
||||
<li><a href="usage.html">Usage</a></li> |
||||
<li><a href="license.html">License</a></li> |
||||
<li>History</li> |
||||
</ul> |
||||
</td> |
||||
<td> |
||||
<h2>Why did I wrote it?</h2> |
||||
|
||||
<p>Someday I found <code>guavad</code>, a disassembler for java byte |
||||
code (it does similar things like <code>javap -c</code>). I used |
||||
it on a class file, and found that it was possible to reconstruct the |
||||
original java code. First I did it by hand on some small routines, |
||||
but I soon realized that it was a rather stupid task, and that I could |
||||
write a <a href="dasm_to_java.perl"><code>perl</code> script</a> |
||||
that does the same. At the end of the next day I had a working |
||||
decompiler.</p> |
||||
|
||||
<p>Now while it was working, it was not easy to use. You had to |
||||
decompile the code first with a disassembler, cut the method, you |
||||
wanted to decompile and then run the perl script on it. So I decided |
||||
to get some information of the class files and do this all |
||||
automatically. I decided to write it in <code>java</code> now, |
||||
because it suited best.</p> |
||||
|
||||
<p>Just for the records: the java code is now more than 50 times |
||||
bigger than the original perl script and is still growing.</p> |
||||
</td> |
||||
</table> |
||||
<hr> |
||||
|
||||
<p><A HREF="mailto:Jochen.Hoenicke@Informatik.Uni-Oldenburg.DE"> |
||||
http://www.informatik.uni-oldenburg.de/~delwi/jode/history.html</A>, last |
||||
updated on <em>24-Okt-1999</em>.</p> |
||||
|
||||
</body> |
||||
</html> |
@ -1,39 +0,0 @@ |
||||
<html> |
||||
<head> |
||||
<title>Jode Test Applet</title> |
||||
</head> |
||||
|
||||
|
||||
<body> |
||||
<a href="jode.html">Up</a> |
||||
|
||||
<h1>Test Applet</h1> |
||||
|
||||
<applet code="jode/JodeApplet.class" archive="jode-applet.jar" width=640 height=400> |
||||
<param name=classpath |
||||
value="http://www.informatik.uni-oldenburg.de/~delwi/jode/jode_cls.zip"> |
||||
<param name=class value="jode.JodeApplet"> |
||||
</applet><br><br> |
||||
|
||||
Press the start button to decompile this applet. You may change the |
||||
class path and class name to point to a class file of your choice. |
||||
But note that most browsers doesn't allow loading files from a |
||||
different server.<br><br> |
||||
|
||||
Save probably doesn't work, because it is forbidden by the browser.<br><br> |
||||
|
||||
You may give multiple entries in the class path field separated by a |
||||
comma. The components may be local or remote zip or jar files or |
||||
directories. Note that browsers forbid accesses to different hosts or |
||||
local files that are not in a subdirectory of the applet |
||||
directory.<br><br> |
||||
|
||||
BTW: If you just want to read the source, you may <a |
||||
href="http://www.informatik.uni-oldenburg.de/~delwi/jode">browse it |
||||
online</a> <code>:-)</code><br><br> |
||||
|
||||
You can download this, look <a href="jode-useapplet.html">here</a> for |
||||
a description. |
||||
|
||||
</body> |
||||
</html> |
After Width: | Height: | Size: 5.7 KiB |
@ -1,15 +0,0 @@ |
||||
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN"> |
||||
<html> |
||||
<head> |
||||
<title>Using the obfuscator</title> |
||||
</head> |
||||
<body> |
||||
<a href="jode.html">Up</a> |
||||
|
||||
The obfuscator currently takes a lot of options (I plan to use an |
||||
extra file containing the options). You should therefore create a |
||||
script (or batch file under Windows) that invokes the obfuscator.<br> |
||||
|
||||
|
||||
|
||||
</body> |
@ -1,97 +0,0 @@ |
||||
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN"> |
||||
<html> |
||||
<head> |
||||
<title>Using the decompiler under Unix</title> |
||||
</head> |
||||
<body> |
||||
<a href="jode.html">Up</a> |
||||
|
||||
|
||||
<h1>Step by Step</h1> |
||||
|
||||
You need java version 1.1 or higher. In the following description I |
||||
assume you have the JDK 1.1, residing in <code>/usr/lib/java</code>. |
||||
For other installations you have to adopt the paths. Also I use the |
||||
bourne shell syntax. |
||||
|
||||
<ol> |
||||
<li> Set the classpath. It should include the jode_cls.zip as well as |
||||
the directory where the class files you want to decompile resides. |
||||
You can also specify a zip file instead of a directory. It is |
||||
also a good idea to include the zip resp. jar file containing the |
||||
basic <code>java.*</code> class files. |
||||
<pre> |
||||
export CLASSPATH=$HOME/jode_cls.zip:$HOME/download:/usr/lib/java/lib/classes.zip |
||||
</pre> |
||||
</li> |
||||
<li> Now you can start the graphical interface as following (Note the |
||||
case of the parameter) |
||||
<pre> |
||||
java jode.JodeWindow |
||||
</pre> |
||||
</li> |
||||
<li> The classpath field should already contain the classpath you set |
||||
above. The class field contains <code>jode.JodeWindow</code> and |
||||
you may push start immediately to decompile this class. |
||||
</li> |
||||
<li> If you want to decompile your own <code>.class</code> file, enter |
||||
the name of the file without <code>.class</code> extension and |
||||
push the start button. Change the class path if it doesn't point |
||||
to the right directory. |
||||
</li> |
||||
<li> After decompiling, you can save the file using the save button. |
||||
</li> |
||||
</ol> |
||||
|
||||
<h1>Packaged classes</h1> |
||||
|
||||
If the class file belongs to a package (like jode.JodeWindow) you |
||||
have to give the full qualified class name (the package names |
||||
separated by a dot followed by the class name). The class path should |
||||
point to the directory containing the package sub directories in this |
||||
case. <br><br> |
||||
|
||||
<h1>Command line utility</h1> |
||||
|
||||
There is also a command line utility which is much more powerful, but |
||||
also more difficult to use. You can start it (after setting the |
||||
classpath) with |
||||
<pre> |
||||
java jode.Decompiler |
||||
</pre> |
||||
and get a list of the supported parameters. To decompile the whole |
||||
decompiler you can use these magic lines: |
||||
<pre> |
||||
mkdir src |
||||
CLASSPATH=jode_cls.zip java jode.Decompiler --dest src \ |
||||
`unzip -v jode_cls.zip|grep .class|cut -c59-|sed s/.class//|sed s?/?.?g` |
||||
</pre> |
||||
|
||||
<h1>Obfuscator</h1> |
||||
|
||||
So you want to protect your classes from decompiling? Well that is |
||||
your choice. You may use my obfuscator. The class files are |
||||
decompileable again (except when using -strong option, but this is |
||||
reversable by obfuscating again), but at least the information about |
||||
the names of identifiers are completely lost. <br><br> |
||||
|
||||
The obfuscator is quite difficult to use (this is why I hided this |
||||
section here) and there is only a short description of the command |
||||
line parameters: |
||||
<pre> |
||||
CLASSPATH=jode_cls.zip java jode.Obfuscator |
||||
</pre> |
||||
|
||||
As a hint, to obfuscate the obfuscator use the following command line: |
||||
<pre> |
||||
CLASSPATH=jode_cls.zip java jode.Obfuscator \ |
||||
-cp jode_cls.zip:/usr/lib/java/lib/classes.zip -d obfuscated.zip \ |
||||
-weak -revtable translate.tbl -swaporder \ |
||||
-preserve jode.Obfuscator.main jode |
||||
</pre> |
||||
|
||||
The options <code>-unique</code> and <code>-table</code> can be |
||||
helpful to deobfuscate obfuscated code. |
||||
</body> |
||||
|
||||
|
@ -1,49 +0,0 @@ |
||||
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN"> |
||||
<html> |
||||
<head> |
||||
<title>Using the decompiler as applet (locally)</title> |
||||
</head> |
||||
<body> |
||||
<a href="jode.html">Up</a> |
||||
|
||||
<h1>Step by Step</h1> |
||||
|
||||
If you want to use the applet version you need a recent Internet |
||||
Explorer or Netscape which supports java 1.1. You can also use the |
||||
appletviewer of the java development kit. |
||||
|
||||
<ol> |
||||
<li> Copy <a |
||||
href="http://www.informatik.uni-oldenburg.de/~delwi/jode/jode-applet.html" |
||||
>jode-applet.html</a> into a local directory. |
||||
</li> |
||||
<li> Copy <a |
||||
href="http://www.informatik.uni-oldenburg.de/~delwi/jode/jode_cls.zip" |
||||
>jode_cls.zip</a> to the <b>same</b> directory. |
||||
</li> |
||||
<li> Copy the <code>.class</code> file or <code>zip</code> file, you |
||||
want to decompile, to that directory. |
||||
</li> |
||||
<li> Load the html file into Netscape or Internet Explorer. |
||||
</li> |
||||
<li> Set the classpath simply to `<code>.</code>' (without quotes). |
||||
You may also specify a zip or jar file here. Note that applet and |
||||
class files must be in the same directory due to security policy. <br> |
||||
You can also change the default classpath in the html file. |
||||
</li> |
||||
<li> Enter the name of the class without <code>.class</code> |
||||
extension. |
||||
</li> |
||||
<li> Press start button in applet. </li> |
||||
<li> Press save button to save the decompiled code. </li> |
||||
</ol> |
||||
|
||||
<h1>Packaged classes</h1> |
||||
|
||||
If the class file belongs to a package (like jode.JodeWindow) you |
||||
have to give the full qualified class name (the package names |
||||
separated by a dot followed by the class name). The class path should |
||||
point to the directory containing the package sub directories in this |
||||
case. |
||||
|
||||
</body> |
@ -1,62 +0,0 @@ |
||||
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN"> |
||||
<html> |
||||
<head> |
||||
<title>Using the decompiler under Windows</title> |
||||
</head> |
||||
<body> |
||||
<a href="jode.html">Up</a> |
||||
|
||||
<h1>Step by Step</h1> |
||||
|
||||
You need java version 1.1 or higher. I suggest using the Sun JDK or |
||||
JRE 1.1 or 1.2. In the following description I assume Sun JDK 1.2, |
||||
for other virtual machines the paths and the name of the java |
||||
interpreter (<code>c:\jdk1.2\java</code>) may differ. <br><br> |
||||
|
||||
<ol> |
||||
<li> Set the classpath. It should include the jode_cls.zip as well as |
||||
the directory where the class files you want to decompile resides. |
||||
You can also specify a zip file instead of a directory. It is |
||||
also a good Idea to include the zip resp. jar file containing the |
||||
basic <code>java.*</code> class files. |
||||
<pre> |
||||
set CLASSPATH=c:\temp\jode_cls.zip;c:\temp;c:\jdk1.2\jre\lib\rt.jar |
||||
</pre> |
||||
</li> |
||||
<li> Now you can start the graphical interface as following (Note the |
||||
case of the parameter) |
||||
<pre> |
||||
c:\jdk1.2\java jode.JodeWindow |
||||
</pre> |
||||
</li> |
||||
<li> The classpath field should already contain the classpath you set |
||||
above. The class field contains <code>jode.JodeWindow</code> and |
||||
you may push start immediately to decompile this class. |
||||
</li> |
||||
<li> If you want to decompile your own <code>.class</code> file, enter |
||||
the name of the file without <code>.class</code> extension and |
||||
push the start button. Change the class path if it doesn't point |
||||
to the right directory. |
||||
</li> |
||||
<li> After decompiling, you can save the file using the save button. |
||||
</li> |
||||
</ol> |
||||
|
||||
<h1>Packaged classes</h1> |
||||
|
||||
If the class file belongs to a package (like jode.JodeWindow) you |
||||
have to give the full qualified class name (the package names |
||||
separated by a dot followed by the class name). The class path should |
||||
point to the directory containing the package sub directories in this |
||||
case. <br><br> |
||||
|
||||
<h1>Command line utility</h1> |
||||
|
||||
There is also a command line utility which is much more powerful, but |
||||
also more difficult to use. You can start it (after setting the |
||||
classpath) with |
||||
<pre> |
||||
c:\jdk1.2\java jode.Decompiler |
||||
</pre> |
||||
and get a list of the supported parameters. |
||||
</body> |
@ -0,0 +1,530 @@ |
||||
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN"> |
||||
<html> |
||||
<head> |
||||
<TITLE>GNU General Public License - GNU Project - Free Software Foundation (FSF)</TITLE> |
||||
<meta name="robots" content="noindex"> |
||||
<meta name="date" content="1999-10-24"> |
||||
</head> |
||||
|
||||
<body> |
||||
<table cellpadding=4 cellspacing=1 width=100%> |
||||
<tr> |
||||
<td></td> |
||||
<td> <img src="jode-logo.gif" alt="JODE" width=286 height=110></td> |
||||
</tr> |
||||
<tr> |
||||
<td valign="top"> |
||||
<B><a href="http://www.informatik.uni-oldenburg.de/~delwi">Homepage</a></B> |
||||
<br><br> |
||||
<a href="jode.html"> |
||||
<B>Jode</B></a> |
||||
<ul> |
||||
<li><a href="applet.html">Test It Online</a></li> |
||||
<li><a href="download.html">Download</a></li> |
||||
<li><a href="usage.html">Usage</a></li> |
||||
<li>License</li> |
||||
<li><a href="history.html">History</a></li> |
||||
</ul> |
||||
</td> |
||||
<td> |
||||
<h2>License</h2> |
||||
|
||||
<p><i>JODE</i> is Copyright 1998,1999 by Jochen Hoenicke. It is |
||||
released under GNU GPL. That basically means, that you can copy or |
||||
modify this code, as long as you put all your modification under the |
||||
GPL again. Here is the complete license:</p> |
||||
|
||||
<H2>Table of Contents</H2> |
||||
<UL> |
||||
<LI><A NAME="TOC1" HREF="#SEC1">GNU GENERAL PUBLIC LICENSE</A> |
||||
<UL> |
||||
<LI><A NAME="TOC2" HREF="#SEC2">Preamble</A> |
||||
<LI><A NAME="TOC3" HREF="#SEC3">TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</A> |
||||
<LI><A NAME="TOC4" HREF="#SEC4">How to Apply These Terms to Your New Programs</A> |
||||
|
||||
</UL> |
||||
</UL> |
||||
|
||||
<P> |
||||
|
||||
<HR> |
||||
|
||||
<P> |
||||
|
||||
|
||||
|
||||
<H2><A NAME="SEC1" HREF="#TOC1">GNU GENERAL PUBLIC LICENSE</A></H2> |
||||
<P> |
||||
Version 2, June 1991 |
||||
|
||||
</P> |
||||
|
||||
<PRE> |
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc. |
||||
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA |
||||
|
||||
Everyone is permitted to copy and distribute verbatim copies |
||||
of this license document, but changing it is not allowed. |
||||
</PRE> |
||||
|
||||
|
||||
|
||||
<H2><A NAME="SEC2" HREF="#TOC2">Preamble</A></H2> |
||||
|
||||
<P> |
||||
The licenses for most software are designed to take away your |
||||
freedom to share and change it. By contrast, the GNU General Public |
||||
License is intended to guarantee your freedom to share and change free |
||||
software--to make sure the software is free for all its users. This |
||||
General Public License applies to most of the Free Software |
||||
Foundation's software and to any other program whose authors commit to |
||||
using it. (Some other Free Software Foundation software is covered by |
||||
the GNU Library General Public License instead.) You can apply it to |
||||
your programs, too. |
||||
|
||||
</P> |
||||
<P> |
||||
When we speak of free software, we are referring to freedom, not |
||||
price. Our General Public Licenses are designed to make sure that you |
||||
have the freedom to distribute copies of free software (and charge for |
||||
this service if you wish), that you receive source code or can get it |
||||
if you want it, that you can change the software or use pieces of it |
||||
in new free programs; and that you know you can do these things. |
||||
|
||||
</P> |
||||
<P> |
||||
To protect your rights, we need to make restrictions that forbid |
||||
anyone to deny you these rights or to ask you to surrender the rights. |
||||
These restrictions translate to certain responsibilities for you if you |
||||
distribute copies of the software, or if you modify it. |
||||
|
||||
</P> |
||||
<P> |
||||
For example, if you distribute copies of such a program, whether |
||||
gratis or for a fee, you must give the recipients all the rights that |
||||
you have. You must make sure that they, too, receive or can get the |
||||
source code. And you must show them these terms so they know their |
||||
rights. |
||||
|
||||
</P> |
||||
<P> |
||||
We protect your rights with two steps: (1) copyright the software, and |
||||
(2) offer you this license which gives you legal permission to copy, |
||||
distribute and/or modify the software. |
||||
|
||||
</P> |
||||
<P> |
||||
Also, for each author's protection and ours, we want to make certain |
||||
that everyone understands that there is no warranty for this free |
||||
software. If the software is modified by someone else and passed on, we |
||||
want its recipients to know that what they have is not the original, so |
||||
that any problems introduced by others will not reflect on the original |
||||
authors' reputations. |
||||
|
||||
</P> |
||||
<P> |
||||
Finally, any free program is threatened constantly by software |
||||
patents. We wish to avoid the danger that redistributors of a free |
||||
program will individually obtain patent licenses, in effect making the |
||||
program proprietary. To prevent this, we have made it clear that any |
||||
patent must be licensed for everyone's free use or not licensed at all. |
||||
|
||||
</P> |
||||
<P> |
||||
The precise terms and conditions for copying, distribution and |
||||
modification follow. |
||||
|
||||
</P> |
||||
|
||||
|
||||
<H2><A NAME="SEC3" HREF="#TOC3">TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</A></H2> |
||||
|
||||
|
||||
<P> |
||||
|
||||
<STRONG>0.</STRONG> |
||||
This License applies to any program or other work which contains |
||||
a notice placed by the copyright holder saying it may be distributed |
||||
under the terms of this General Public License. The "Program", below, |
||||
refers to any such program or work, and a "work based on the Program" |
||||
means either the Program or any derivative work under copyright law: |
||||
that is to say, a work containing the Program or a portion of it, |
||||
either verbatim or with modifications and/or translated into another |
||||
language. (Hereinafter, translation is included without limitation in |
||||
the term "modification".) Each licensee is addressed as "you". |
||||
<P> |
||||
|
||||
Activities other than copying, distribution and modification are not |
||||
covered by this License; they are outside its scope. The act of |
||||
running the Program is not restricted, and the output from the Program |
||||
is covered only if its contents constitute a work based on the |
||||
Program (independent of having been made by running the Program). |
||||
Whether that is true depends on what the Program does. |
||||
|
||||
<P> |
||||
|
||||
<STRONG>1.</STRONG> |
||||
You may copy and distribute verbatim copies of the Program's |
||||
source code as you receive it, in any medium, provided that you |
||||
conspicuously and appropriately publish on each copy an appropriate |
||||
copyright notice and disclaimer of warranty; keep intact all the |
||||
notices that refer to this License and to the absence of any warranty; |
||||
and give any other recipients of the Program a copy of this License |
||||
along with the Program. |
||||
<P> |
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and |
||||
you may at your option offer warranty protection in exchange for a fee. |
||||
<P> |
||||
|
||||
<STRONG>2.</STRONG> |
||||
You may modify your copy or copies of the Program or any portion |
||||
of it, thus forming a work based on the Program, and copy and |
||||
distribute such modifications or work under the terms of Section 1 |
||||
above, provided that you also meet all of these conditions: |
||||
<P> |
||||
|
||||
<UL> |
||||
|
||||
<LI><STRONG>a)</STRONG> |
||||
You must cause the modified files to carry prominent notices |
||||
stating that you changed the files and the date of any change. |
||||
|
||||
<P> |
||||
<LI><STRONG>b)</STRONG> |
||||
You must cause any work that you distribute or publish, that in |
||||
whole or in part contains or is derived from the Program or any |
||||
part thereof, to be licensed as a whole at no charge to all third |
||||
parties under the terms of this License. |
||||
|
||||
<P> |
||||
<LI><STRONG>c)</STRONG> |
||||
If the modified program normally reads commands interactively |
||||
when run, you must cause it, when started running for such |
||||
interactive use in the most ordinary way, to print or display an |
||||
announcement including an appropriate copyright notice and a |
||||
notice that there is no warranty (or else, saying that you provide |
||||
a warranty) and that users may redistribute the program under |
||||
these conditions, and telling the user how to view a copy of this |
||||
License. (Exception: if the Program itself is interactive but |
||||
does not normally print such an announcement, your work based on |
||||
the Program is not required to print an announcement.) |
||||
</UL> |
||||
|
||||
These requirements apply to the modified work as a whole. If |
||||
identifiable sections of that work are not derived from the Program, |
||||
and can be reasonably considered independent and separate works in |
||||
themselves, then this License, and its terms, do not apply to those |
||||
sections when you distribute them as separate works. But when you |
||||
distribute the same sections as part of a whole which is a work based |
||||
on the Program, the distribution of the whole must be on the terms of |
||||
this License, whose permissions for other licensees extend to the |
||||
entire whole, and thus to each and every part regardless of who wrote it. |
||||
<P> |
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest |
||||
your rights to work written entirely by you; rather, the intent is to |
||||
exercise the right to control the distribution of derivative or |
||||
collective works based on the Program. |
||||
<P> |
||||
|
||||
In addition, mere aggregation of another work not based on the Program |
||||
with the Program (or with a work based on the Program) on a volume of |
||||
a storage or distribution medium does not bring the other work under |
||||
the scope of this License. |
||||
|
||||
<P> |
||||
|
||||
<STRONG>3.</STRONG> |
||||
You may copy and distribute the Program (or a work based on it, |
||||
under Section 2) in object code or executable form under the terms of |
||||
Sections 1 and 2 above provided that you also do one of the following: |
||||
|
||||
|
||||
<!-- we use this doubled UL to get the sub-sections indented, --> |
||||
<!-- while making the bullets as unobvious as possible. --> |
||||
<UL> |
||||
|
||||
<LI><STRONG>a)</STRONG> |
||||
Accompany it with the complete corresponding machine-readable |
||||
source code, which must be distributed under the terms of Sections |
||||
1 and 2 above on a medium customarily used for software interchange; or, |
||||
|
||||
<P> |
||||
<LI><STRONG>b)</STRONG> |
||||
Accompany it with a written offer, valid for at least three |
||||
years, to give any third party, for a charge no more than your |
||||
cost of physically performing source distribution, a complete |
||||
machine-readable copy of the corresponding source code, to be |
||||
distributed under the terms of Sections 1 and 2 above on a medium |
||||
customarily used for software interchange; or, |
||||
|
||||
<P> |
||||
<LI><STRONG>c)</STRONG> |
||||
Accompany it with the information you received as to the offer |
||||
to distribute corresponding source code. (This alternative is |
||||
allowed only for noncommercial distribution and only if you |
||||
received the program in object code or executable form with such |
||||
an offer, in accord with Subsection b above.) |
||||
</UL> |
||||
|
||||
The source code for a work means the preferred form of the work for |
||||
making modifications to it. For an executable work, complete source |
||||
code means all the source code for all modules it contains, plus any |
||||
associated interface definition files, plus the scripts used to |
||||
control compilation and installation of the executable. However, as a |
||||
special exception, the source code distributed need not include |
||||
anything that is normally distributed (in either source or binary |
||||
form) with the major components (compiler, kernel, and so on) of the |
||||
operating system on which the executable runs, unless that component |
||||
itself accompanies the executable. |
||||
<P> |
||||
|
||||
If distribution of executable or object code is made by offering |
||||
access to copy from a designated place, then offering equivalent |
||||
access to copy the source code from the same place counts as |
||||
distribution of the source code, even though third parties are not |
||||
compelled to copy the source along with the object code. |
||||
<P> |
||||
|
||||
<STRONG>4.</STRONG> |
||||
You may not copy, modify, sublicense, or distribute the Program |
||||
except as expressly provided under this License. Any attempt |
||||
otherwise to copy, modify, sublicense or distribute the Program is |
||||
void, and will automatically terminate your rights under this License. |
||||
However, parties who have received copies, or rights, from you under |
||||
this License will not have their licenses terminated so long as such |
||||
parties remain in full compliance. |
||||
|
||||
<P> |
||||
|
||||
<STRONG>5.</STRONG> |
||||
You are not required to accept this License, since you have not |
||||
signed it. However, nothing else grants you permission to modify or |
||||
distribute the Program or its derivative works. These actions are |
||||
prohibited by law if you do not accept this License. Therefore, by |
||||
modifying or distributing the Program (or any work based on the |
||||
Program), you indicate your acceptance of this License to do so, and |
||||
all its terms and conditions for copying, distributing or modifying |
||||
the Program or works based on it. |
||||
|
||||
<P> |
||||
|
||||
<STRONG>6.</STRONG> |
||||
Each time you redistribute the Program (or any work based on the |
||||
Program), the recipient automatically receives a license from the |
||||
original licensor to copy, distribute or modify the Program subject to |
||||
these terms and conditions. You may not impose any further |
||||
restrictions on the recipients' exercise of the rights granted herein. |
||||
You are not responsible for enforcing compliance by third parties to |
||||
this License. |
||||
|
||||
<P> |
||||
|
||||
<STRONG>7.</STRONG> |
||||
If, as a consequence of a court judgment or allegation of patent |
||||
infringement or for any other reason (not limited to patent issues), |
||||
conditions are imposed on you (whether by court order, agreement or |
||||
otherwise) that contradict the conditions of this License, they do not |
||||
excuse you from the conditions of this License. If you cannot |
||||
distribute so as to satisfy simultaneously your obligations under this |
||||
License and any other pertinent obligations, then as a consequence you |
||||
may not distribute the Program at all. For example, if a patent |
||||
license would not permit royalty-free redistribution of the Program by |
||||
all those who receive copies directly or indirectly through you, then |
||||
the only way you could satisfy both it and this License would be to |
||||
refrain entirely from distribution of the Program. |
||||
<P> |
||||
|
||||
If any portion of this section is held invalid or unenforceable under |
||||
any particular circumstance, the balance of the section is intended to |
||||
apply and the section as a whole is intended to apply in other |
||||
circumstances. |
||||
<P> |
||||
|
||||
It is not the purpose of this section to induce you to infringe any |
||||
patents or other property right claims or to contest validity of any |
||||
such claims; this section has the sole purpose of protecting the |
||||
integrity of the free software distribution system, which is |
||||
implemented by public license practices. Many people have made |
||||
generous contributions to the wide range of software distributed |
||||
through that system in reliance on consistent application of that |
||||
system; it is up to the author/donor to decide if he or she is willing |
||||
to distribute software through any other system and a licensee cannot |
||||
impose that choice. |
||||
<P> |
||||
|
||||
This section is intended to make thoroughly clear what is believed to |
||||
be a consequence of the rest of this License. |
||||
|
||||
<P> |
||||
|
||||
<STRONG>8.</STRONG> |
||||
If the distribution and/or use of the Program is restricted in |
||||
certain countries either by patents or by copyrighted interfaces, the |
||||
original copyright holder who places the Program under this License |
||||
may add an explicit geographical distribution limitation excluding |
||||
those countries, so that distribution is permitted only in or among |
||||
countries not thus excluded. In such case, this License incorporates |
||||
the limitation as if written in the body of this License. |
||||
|
||||
<P> |
||||
|
||||
<STRONG>9.</STRONG> |
||||
The Free Software Foundation may publish revised and/or new versions |
||||
of the General Public License from time to time. Such new versions will |
||||
be similar in spirit to the present version, but may differ in detail to |
||||
address new problems or concerns. |
||||
<P> |
||||
|
||||
Each version is given a distinguishing version number. If the Program |
||||
specifies a version number of this License which applies to it and "any |
||||
later version", you have the option of following the terms and conditions |
||||
either of that version or of any later version published by the Free |
||||
Software Foundation. If the Program does not specify a version number of |
||||
this License, you may choose any version ever published by the Free Software |
||||
Foundation. |
||||
|
||||
<P> |
||||
|
||||
|
||||
<STRONG>10.</STRONG> |
||||
If you wish to incorporate parts of the Program into other free |
||||
programs whose distribution conditions are different, write to the author |
||||
to ask for permission. For software which is copyrighted by the Free |
||||
Software Foundation, write to the Free Software Foundation; we sometimes |
||||
make exceptions for this. Our decision will be guided by the two goals |
||||
of preserving the free status of all derivatives of our free software and |
||||
of promoting the sharing and reuse of software generally. |
||||
|
||||
|
||||
|
||||
<P><STRONG>NO WARRANTY</STRONG></P> |
||||
|
||||
<P> |
||||
|
||||
<STRONG>11.</STRONG> |
||||
BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY |
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN |
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES |
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED |
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS |
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE |
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, |
||||
REPAIR OR CORRECTION. |
||||
|
||||
<P> |
||||
|
||||
<STRONG>12.</STRONG> |
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING |
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR |
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, |
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING |
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED |
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY |
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER |
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE |
||||
POSSIBILITY OF SUCH DAMAGES. |
||||
|
||||
<P> |
||||
|
||||
|
||||
<H2>END OF TERMS AND CONDITIONS</H2> |
||||
|
||||
|
||||
|
||||
<H2><A NAME="SEC4" HREF="#TOC4">How to Apply These Terms to Your New Programs</A></H2> |
||||
|
||||
<P> |
||||
If you develop a new program, and you want it to be of the greatest |
||||
possible use to the public, the best way to achieve this is to make it |
||||
free software which everyone can redistribute and change under these terms. |
||||
|
||||
</P> |
||||
<P> |
||||
To do so, attach the following notices to the program. It is safest |
||||
to attach them to the start of each source file to most effectively |
||||
convey the exclusion of warranty; and each file should have at least |
||||
the "copyright" line and a pointer to where the full notice is found. |
||||
|
||||
</P> |
||||
|
||||
<PRE> |
||||
<VAR>one line to give the program's name and an idea of what it does.</VAR> |
||||
Copyright (C) <VAR>yyyy</VAR> <VAR>name of author</VAR> |
||||
|
||||
This program is free software; you can redistribute it and/or |
||||
modify it under the terms of the GNU General Public License |
||||
as published by the Free Software Foundation; either version 2 |
||||
of the License, or (at your option) any later version. |
||||
|
||||
This program is distributed in the hope that it will be useful, |
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
GNU General Public License for more details. |
||||
|
||||
You should have received a copy of the GNU General Public License |
||||
along with this program; if not, write to the Free Software |
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
||||
</PRE> |
||||
|
||||
<P> |
||||
Also add information on how to contact you by electronic and paper mail. |
||||
|
||||
</P> |
||||
<P> |
||||
If the program is interactive, make it output a short notice like this |
||||
when it starts in an interactive mode: |
||||
|
||||
</P> |
||||
|
||||
<PRE> |
||||
Gnomovision version 69, Copyright (C) <VAR>yyyy</VAR> <VAR>name of author</VAR> |
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details |
||||
type `show w'. This is free software, and you are welcome |
||||
to redistribute it under certain conditions; type `show c' |
||||
for details. |
||||
</PRE> |
||||
|
||||
<P> |
||||
The hypothetical commands <SAMP>`show w'</SAMP> and <SAMP>`show c'</SAMP> should show |
||||
the appropriate parts of the General Public License. Of course, the |
||||
commands you use may be called something other than <SAMP>`show w'</SAMP> and |
||||
<SAMP>`show c'</SAMP>; they could even be mouse-clicks or menu items--whatever |
||||
suits your program. |
||||
|
||||
</P> |
||||
<P> |
||||
You should also get your employer (if you work as a programmer) or your |
||||
school, if any, to sign a "copyright disclaimer" for the program, if |
||||
necessary. Here is a sample; alter the names: |
||||
|
||||
</P> |
||||
|
||||
<PRE> |
||||
Yoyodyne, Inc., hereby disclaims all copyright |
||||
interest in the program `Gnomovision' |
||||
(which makes passes at compilers) written |
||||
by James Hacker. |
||||
|
||||
<VAR>signature of Ty Coon</VAR>, 1 April 1989 |
||||
Ty Coon, President of Vice |
||||
</PRE> |
||||
|
||||
<P> |
||||
This General Public License does not permit incorporating your program into |
||||
proprietary programs. If your program is a subroutine library, you may |
||||
consider it more useful to permit linking proprietary applications with the |
||||
library. If this is what you want to do, use the GNU Library General |
||||
Public License instead of this License. |
||||
</td> |
||||
</table> |
||||
<hr> |
||||
|
||||
<p><A HREF="mailto:Jochen.Hoenicke@Informatik.Uni-Oldenburg.DE"> |
||||
http://www.informatik.uni-oldenburg.de/~delwi/jode/history.html</A>, last |
||||
updated on <em>24-Okt-1999</em>.</p> |
||||
|
||||
</body> |
||||
</html> |
@ -0,0 +1,28 @@ |
||||
# This is a sample script file to obfuscate my project |
||||
|
||||
strip = "unreach","lvt","inner" |
||||
|
||||
load = new WildCard { value = "org.myorg.myproject" }, |
||||
new WildCard { value = "org.myorg.mylib*" }, |
||||
new WildCard { value = "org.otherorg.shortlib" } |
||||
|
||||
preserve = new WildCard { value = "org.myorg.application.main.*" }, |
||||
new WildCard { value = "org.myorg.applet.<init>.()V" }, |
||||
new WildCard { value = "org.resources.bundle*.<init>.()V" }, |
||||
new MultiIdentifierMatcher { |
||||
and = new WildCard { value = "org.myorg.publiclib.*" }, |
||||
new ModifierMatcher { access = "PUBLIC" } |
||||
} |
||||
|
||||
renamer = ney KeywordRenamer { |
||||
backup = new StrongRenamer { |
||||
charsetStart = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" |
||||
charsetPart = |
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_" |
||||
charsetPackage = "abcdefghijklmnopqrstuvwxyz" |
||||
charsetClass = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" |
||||
} |
||||
} |
||||
|
||||
analyzer = new SimpleAnalyzer |
||||
post = new LocalOptimizer, new RemovePopAnalyzer |
@ -0,0 +1,201 @@ |
||||
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN"> |
||||
<html> |
||||
<head> |
||||
<title>Java Optimize and Decompile Environment (JODE)</title> |
||||
<meta name="robots" content="noindex"> |
||||
<meta name="date" content="1999-10-24"> |
||||
</head> |
||||
|
||||
<body> |
||||
<table cellpadding=4 cellspacing=1 width=100%> |
||||
<tr> |
||||
<td></td> |
||||
<td> <img src="jode-logo.gif" alt="JODE" width=286 height=110></td> |
||||
</tr> |
||||
<tr> |
||||
<td valign="top"> |
||||
<B><a href="http://www.informatik.uni-oldenburg.de/~delwi">Homepage</a></B> |
||||
<br><br> |
||||
<a href="jode.html"><B>Jode</B></a> |
||||
<ul> |
||||
<li><a href="applet.html">Test It Online</a></li> |
||||
<li><a href="download.html">Download</a></li> |
||||
<li>Usage<br> |
||||
<a href="#decompiler">Decompiler</a><br> |
||||
<a href="#cmdline">Command Line</a><br> |
||||
<a href="#awt">AWT Interface</a><br> |
||||
<a href="#swing">Swing Interface</a><br> |
||||
<a href="#optimizer">Obfuscator</a><br> |
||||
</li><br> |
||||
<li><a href="license.html">License</a></li> |
||||
<li><a href="history.html">History</a></li> |
||||
</ul> |
||||
</td> |
||||
<td> |
||||
<a name="decompiler"> |
||||
<h1>Using the Decompiler</h1></a> |
||||
After you have <a href="download.html">downloaded</a> the necessary |
||||
packages, put them into your <tt>CLASSPATH</tt>: |
||||
|
||||
<ul><li>Under Windows you have to start a MSDOS session and type |
||||
something like: |
||||
<pre> |
||||
set CLASSPATH=C:\download\jode-xxx.jar;C:\swing\swingall.jar |
||||
</pre> |
||||
</li><li>Under Unix you start a shell and type (for bourne shell): |
||||
<pre>export CLASSPATH=/tmp/jode-xxx.jar:/usr/local/swing/swingall.jar</pre> |
||||
or for csh: |
||||
<pre>setenv CLASSPATH /tmp/jode-xxx.jar:/usr/local/swing/swingall.jar</pre> |
||||
</ul> |
||||
|
||||
<a name="cmdline"><h3>Command Line Interface</h3></a> |
||||
|
||||
The most powerful way to start <I>JODE</I>'s decompiler is the command |
||||
line interface. Some people don't like long command lines; they |
||||
should go to the next section. <br> |
||||
|
||||
Start the class <tt>jode.Decompiler</tt> with the options. The |
||||
following command will give a complete list of the available commands: |
||||
|
||||
<pre>java jode.Decompiler --help</pre> |
||||
|
||||
<a name="awt"><h3>AWT Interface</h3></a> |
||||
|
||||
The AWT Interface looks exactly like the <a |
||||
href="applet.html">applet</a>. In fact the applet uses the AWT |
||||
Interface. You start it after setting the <tt>CLASSPATH</tt> (see <a |
||||
href="#decompiler">above</a>), with |
||||
<pre>java jode.JodeWindow</pre> |
||||
|
||||
In the classpath line you can enter a number of jar files, zip files |
||||
and directories separated by comma(<tt>,</tt>). Then enter the |
||||
dot(<tt>.</tt>) separated name of the class you want to decompile. |
||||
Press the <code>start</code> button and the decompiled class should |
||||
appear. You can save it via the <code>save</code> button. |
||||
|
||||
<a name="swing"><h3>Swing Interface</h3></a> |
||||
|
||||
For the swing interface you need java version 1.2 or the separately |
||||
available swing package (see <a href="download.html#swing">download |
||||
page</a>. <br> |
||||
|
||||
The swing interface will show the package hierarchie of all classes |
||||
in the classpath on the left side. You can now select a class and the |
||||
decompiled code will appear on the right side. Via the menu, you may |
||||
change the classpath or switch between package hierarchie tree and |
||||
class inheritence tree.<br> |
||||
|
||||
The swing interface is very nice, if you just want to work how |
||||
something works, and you don't have the source code. It is especially |
||||
useful to trace bugs through library code. It is not meant to |
||||
generate <tt>java</tt> files and so you won't find a save option |
||||
there.<br> |
||||
|
||||
<a name="optimizer"><h1>Using the Obfuscator</h1> |
||||
|
||||
To use the obfuscator you have to create a script file, say <a |
||||
href="myproject.jos"><tt>myproject.jos</tt></a>, with |
||||
the following contents (You have to adapt it to match your project, of |
||||
course). It should contain the following options: |
||||
|
||||
<p>First select what you want to strip. There are several |
||||
possibilities, which can be separated by comma(<tt>,</tt>):</p> |
||||
<dl> |
||||
<dt>unreach</dt> |
||||
<dd>strip unreachable methods and classes.</dd> |
||||
<dt>source</dt> |
||||
<dd>remove the name of the java file (exceptions will get unreadable).</dd> |
||||
<dt>lnt</dt> |
||||
<dd>remove the line number table (exceptions will get unreadable).</dd> |
||||
<dt>lvt</dt> |
||||
<dd>remove the local variable table (debugging doesn't work).</dd> |
||||
<dt>inner</dt> |
||||
<dd>strip inner class info (reflection doesn't work correctly).</dd> |
||||
</dl> |
||||
<pre> |
||||
strip = "unreach","lvt","inner" |
||||
</pre> |
||||
|
||||
<p>Select the packages and classes you want to obfuscate. You |
||||
should only include libraries, that you don't ship separately.</p> |
||||
<pre> |
||||
load = new WildCard { value = "org.myorg.myproject" }, |
||||
new WildCard { value = "org.myorg.mylib*" }, |
||||
new WildCard { value = "org.otherorg.shortlib" } |
||||
</pre> |
||||
|
||||
<p>Select the methods and classes you want to preserve. This is |
||||
the <tt>main</tt> method for applications and the default constructor |
||||
<tt><init>.()V</tt> for applets, resource bundles and other classes |
||||
that you load manually at runtime.<br> You have to give the method |
||||
name and the type signature to identify your method. <tt>javap |
||||
-s</tt> will show you the type signatures for your classes, but you |
||||
may also use <tt>*</tt>, to select all methods with that name.</p> |
||||
<pre> |
||||
preserve = new WildCard { value = "org.myorg.application.main.*" }, |
||||
new WildCard { value = "org.myorg.applet.<init>.()V" }, |
||||
new WildCard { value = "org.resources.bundle*.<init>.()V" } |
||||
</pre> |
||||
|
||||
<p>If you want to obfuscate (or just shorten) the identifier you can |
||||
specify a renamer. There are currently following renamer |
||||
available</p> |
||||
<dl><dt>StrongRenamer</dt> |
||||
<dd>Renames to the shortest possible name. You can give a charset |
||||
that should be used. It uses the same name as much as possible.</dd> |
||||
<dt>UniqueRenamer</dt> |
||||
<dd>Renames to unique identifier of the form <tt>xxx123</tt>. Useful |
||||
to reduce name conflicts, before you decompile an obfuscated package.</dd> |
||||
<dt>NameSwapper</dt> |
||||
<dd>This renamer just swaps the names. This is a funny obfuscation |
||||
option that is not very strong, but very confusing.</dd> |
||||
<dt>KeywordRenamer</dt> |
||||
<dd>Renames identifiers to keyword. You can give your own list of |
||||
keywords as parameters. Resulting code is not decompilable directly, |
||||
but it is legal bytecode.</dd> |
||||
</dl> |
||||
<pre> |
||||
renamer = new KeywordRenamer |
||||
</pre> |
||||
|
||||
|
||||
<p>Now you can select the analyzer. The purpose of the |
||||
analyzer is to mark all reachable methods, find out which methods |
||||
needs to get the same name (overloading), and which method names |
||||
mustn't change (overload of library methods, e.g. <tt>nextElement</tt> |
||||
for <tt>Enumeration</tt>s). There are currently two analyzers. |
||||
<dl><dt>SimpleAnalyzer</dt> |
||||
<dd>Straight forward analyzer. It is fast and will remove dead code |
||||
on method basis.</dd> |
||||
<dd><dt>ConstantAnalyzer</dt> |
||||
|
||||
<dd>Strong analyzer that will determine, which fields and instructions |
||||
have constant values. It will remove dead code on instruction basis |
||||
and replace constant instruction with a load constant, or remove them |
||||
completely.<br> This analyzer is especially useful to revert Zelix |
||||
Klassmaster's flow obfuscation.</dd> |
||||
</dl> |
||||
</p> |
||||
<pre> |
||||
analyzer = new SimpleAnalyzer |
||||
</pre> |
||||
|
||||
<p>Pre- and Post transformers transform the bytecode before |
||||
resp. after the Analyzer runs. Using this defaults should be |
||||
okay.</p> |
||||
<pre> |
||||
post = new LocalOptimizer, new RemovePopAnalyzer |
||||
</pre> |
||||
|
||||
</td> |
||||
</table> |
||||
|
||||
<hr> |
||||
|
||||
<p><A HREF="mailto:Jochen.Hoenicke@Informatik.Uni-Oldenburg.DE"> |
||||
http://www.informatik.uni-oldenburg.de/~delwi/jode/usage.html</A>, last |
||||
updated on <em>24-Okt-1999</em>.</p> |
||||
|
||||
</body> |
||||
</html> |
||||
|
Loading…
Reference in new issue