|
|
|
@ -2,73 +2,80 @@ |
|
|
|
|
<html> |
|
|
|
|
<head> |
|
|
|
|
<title>Java Optimize and Decompile Environment (JODE)</title> |
|
|
|
|
<meta name="date" content="2000-06-30"> |
|
|
|
|
<meta name="date" content="2001-05-27"> |
|
|
|
|
<meta name="description" content="JODE - Java Optimize and Decompile Environment."> |
|
|
|
|
<meta name="author" content="Jochen Hoenicke"> |
|
|
|
|
<meta name="keywords" content="jode, java, decompiler, obfuscator, deobfuscator, reverse engineering, free, GPL"> |
|
|
|
|
<style type="text/css"> |
|
|
|
|
<!-- |
|
|
|
|
body { color:#000000; background-color: #FFFFFF; } |
|
|
|
|
.nav { font-family: Helvetica, Arial, sans-serif; font-weight: bold; |
|
|
|
|
color:#000000; background-color: #EEEEF8; } |
|
|
|
|
.footer { color:#FFFFFF; background-color: #737B9C; } |
|
|
|
|
.boldlink { font-weight:bold; text-decoration: none; color:#FFFFFF; } |
|
|
|
|
//--> |
|
|
|
|
</style> |
|
|
|
|
</head> |
|
|
|
|
|
|
|
|
|
<BODY bgcolor=#FFFFFF topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0" marginheight="0" marginwidth="0"> |
|
|
|
|
<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"> |
|
|
|
|
<table cellspacing=0 cellpadding=3 width=100% border=0 bgcolor=eeeef8> |
|
|
|
|
<tr bgcolor="7272cc"> |
|
|
|
|
<td align="center"><font color="ffffff"><b>Jode</b></font></td></tr> |
|
|
|
|
<tr><td align="right"> |
|
|
|
|
<a href="./"><B>Home</B></a><br> |
|
|
|
|
<a href="http://sourceforge.net/project/?group_id=3790">Project page</a><br> |
|
|
|
|
<br> |
|
|
|
|
<a href="./applet.html">Applet</a><br> |
|
|
|
|
<a href="./download.html">Download</a><br> |
|
|
|
|
<a href="./usage.html">Documentation</a><br> |
|
|
|
|
<a href="./license.html">License</a><br> |
|
|
|
|
<a href="./history.html">History</a><br> |
|
|
|
|
<a href="./links.html">Links</a><br> |
|
|
|
|
<a href="./bluesky.html">Blue Sky</a><tr bgcolor="7272cc"> |
|
|
|
|
<td align="center"><font color="ffffff"><b>Feedback</b></font></td></tr> |
|
|
|
|
<tr><td align="right"> |
|
|
|
|
<a href="http://sourceforge.net/bugs/?group_id=3790">Bug Tracking</a><br> |
|
|
|
|
<a href="http://sourceforge.net/forum/?group_id=3790">Public Forums</a><br> |
|
|
|
|
<a href="http://lists.sourceforge.net/mailman/listinfo/jode-users">Mailing List</a><br> |
|
|
|
|
<a href="http://sourceforge.net/sendmessage.html?touser=18252">Private Mail</a><tr bgcolor="7272cc"> |
|
|
|
|
<td align="center"><font color="ffffff"><b>Download</b></font></td></tr> |
|
|
|
|
<tr><td align="right"> |
|
|
|
|
<a href="ftp://jode.sourceforge.net/pub/jode/">FTP server</a><br> |
|
|
|
|
<a href="http://sourceforge.net/project/filelist.html?group_id=3790">Source releases</a></td></tr> |
|
|
|
|
<tr bgcolor="ffffff"><td align="center"><br>Powered by <br> |
|
|
|
|
<a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.html?group_id=3790&type=1" border=0 width=88 height=31 alt="SourceForge"></a><br> |
|
|
|
|
<br>Best viewed with <br> |
|
|
|
|
<a href="http://www.anybrowser.org/campaign/"><img src="a-logo.gif" border=0 width=88 height=31 alt="Any Browser"></a><br> |
|
|
|
|
</td></tr></table> |
|
|
|
|
</td> |
|
|
|
|
<td valign="top"> |
|
|
|
|
<body text=#000000 bgcolor=#FFFFFF> |
|
|
|
|
|
|
|
|
|
<table cellpadding=4 cellspacing=1 width=100% |
|
|
|
|
><tr |
|
|
|
|
><td align="left" |
|
|
|
|
><img src="jode-logo.gif" alt="JODE" width=286 height=110 |
|
|
|
|
></td |
|
|
|
|
><td align="right" |
|
|
|
|
>Powered by <a href="http://sourceforge.net"><img |
|
|
|
|
src="http://sourceforge.net/sflogo.html?group_id=3790&type=1" |
|
|
|
|
border=0 width=88 height=31 alt="SourceForge"></a><br |
|
|
|
|
>Best viewed with <a |
|
|
|
|
href="http://www.anybrowser.org/campaign/"><img |
|
|
|
|
src="a-logo.gif" border=0 width=88 height=31 alt="Any |
|
|
|
|
Browser"></a><br |
|
|
|
|
></td |
|
|
|
|
></tr |
|
|
|
|
></table> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<table cellspacing=0 cellpadding=3 border=0 bgcolor=#EEEEF8 class="nav"> |
|
|
|
|
<tr><td class="nav"> |
|
|
|
|
<a href="./"><B>Home</B></a> | |
|
|
|
|
<a href="http://sourceforge.net/project/?group_id=3790">Project page</a> | |
|
|
|
|
<a href="./applet..html">Applet</a> | |
|
|
|
|
<a href="./download..html">Download</a> | |
|
|
|
|
<a href="./faq..html">FAQ</a> | |
|
|
|
|
<a href="./feedback..html">Feedback</a> | |
|
|
|
|
<a href="./usage..html">Documentation</a> | |
|
|
|
|
<a href="./license..html">License</a> | |
|
|
|
|
<a href="./history..html">History</a> | |
|
|
|
|
<a href="./links..html">Links</a> | |
|
|
|
|
<a href="./bluesky..html">Blue Sky</a></td></tr> |
|
|
|
|
</table><br> |
|
|
|
|
|
|
|
|
|
<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>: |
|
|
|
|
<p>After you have <a href="./download..html">downloaded</a> the jar archive |
|
|
|
|
put it into your <tt>CLASSPATH</tt>. The package |
|
|
|
|
<tt>swingall.jar</tt> is also needed if you are using JDK 1.1.</p> |
|
|
|
|
|
|
|
|
|
<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 |
|
|
|
|
set CLASSPATH=C:\download\jode-1.1.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> |
|
|
|
|
|
|
|
|
|
<li>Under Unix you start a shell and type (for bourne shell): |
|
|
|
|
<pre>export CLASSPATH=/tmp/jode-1.1.jar:/usr/local/swing/swingall.jar</pre> |
|
|
|
|
or for csh: |
|
|
|
|
<pre>setenv CLASSPATH /tmp/jode-xxx.jar:/usr/local/swing/swingall.jar</pre> |
|
|
|
|
<pre>setenv CLASSPATH /tmp/jode-1.1.jar:/usr/local/swing/swingall.jar</pre> |
|
|
|
|
</ul> |
|
|
|
|
<br> |
|
|
|
|
There is also a batch file for windows and a script file for unix, |
|
|
|
|
that you can use. Adapt the CLASSPATH in the file and put it to a |
|
|
|
|
convenient location. |
|
|
|
|
that you can use. You can extract it with the following command: |
|
|
|
|
<pre> |
|
|
|
|
jar -xvf jode-xxx.jar bin/jode.bat <i>resp.</i> bin/jode |
|
|
|
|
jar -xvf jode-1.1-jdk1.1.jar bin/jode.bat <i>resp.</i> bin/jode |
|
|
|
|
</pre> |
|
|
|
|
Edit the file to adapt it to your paths and put it to a convenient location. |
|
|
|
|
|
|
|
|
|
<a name="cmdline"><h3>Command Line Interface</h3></a> |
|
|
|
|
|
|
|
|
@ -81,10 +88,17 @@ following command will give a complete list of the available commands: |
|
|
|
|
|
|
|
|
|
<pre>java jode.decompiler.Main --help</pre> |
|
|
|
|
|
|
|
|
|
If you want to decompile a jar package you can do it this way: |
|
|
|
|
|
|
|
|
|
<pre>java jode.decompiler.Main --dest srcdir program.jar</pre> |
|
|
|
|
|
|
|
|
|
If you have installed the batch file/script, you can use it like this: |
|
|
|
|
<pre>jode --dest srcdir program.jar</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="./usage.html#decompiler">above</a>), with |
|
|
|
|
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="./usage..html#decompiler">above</a>), with |
|
|
|
|
|
|
|
|
|
<pre>java jode.decompiler.Window</pre> |
|
|
|
|
|
|
|
|
@ -97,44 +111,45 @@ 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="./links.html#swing">link |
|
|
|
|
page</a>. You can invoke it like this: |
|
|
|
|
available swing package (see <a href="./links..html#swing">link |
|
|
|
|
page</a>. You can invoke it with the following command: |
|
|
|
|
<pre> |
|
|
|
|
java jode.swingui.Main --classpath classes.jar |
|
|
|
|
java jode.swingui.Main classes.jar |
|
|
|
|
<i>resp.</i> jode swi classes.jar |
|
|
|
|
</pre> |
|
|
|
|
|
|
|
|
|
The swing interface will show the package hierarchie of all classes |
|
|
|
|
<p>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> |
|
|
|
|
class inheritence tree.</p> |
|
|
|
|
|
|
|
|
|
The swing interface is very useful to browse through class files if |
|
|
|
|
<p>The swing interface is very useful to browse through class files if |
|
|
|
|
you don't have the source code. You can also use it to trace bugs in |
|
|
|
|
library code. It is not meant to generate <tt>java</tt> files and so |
|
|
|
|
you won't find a save option there.<br> |
|
|
|
|
you won't find a save option there.</p> |
|
|
|
|
|
|
|
|
|
<a name="java"><h3>Java Interface</h3></a> |
|
|
|
|
|
|
|
|
|
If you want to integrate <i>JODE</i> into your own java program, you |
|
|
|
|
can use the <a |
|
|
|
|
<p>If you want to integrate <i>JODE</i> into your own java program, |
|
|
|
|
you can use the <a |
|
|
|
|
href="Decompiler.java"><code>jode.decompiler.Decompiler</code></a> |
|
|
|
|
class. Note that the GPL only allows you to integrate <i>JODE</i> |
|
|
|
|
into GPL programs. Please contact me if you use <i>JODE</i> in this |
|
|
|
|
way.<br> |
|
|
|
|
into GPL programs. Please tell me if you use <i>JODE</i> in this |
|
|
|
|
way.</p> |
|
|
|
|
|
|
|
|
|
You may use this <a |
|
|
|
|
<p>You may use this <a |
|
|
|
|
href="ftp://jode.sourceforge.net/pub/jode/jode-embedded.jar">stripped |
|
|
|
|
down jar archive</a> containing all necessary classes. |
|
|
|
|
down jar archive</a> containing all necessary classes.</p> |
|
|
|
|
|
|
|
|
|
<a name="optimizer"><h1>Using the Obfuscator</h1> |
|
|
|
|
|
|
|
|
|
To use the obfuscator you should first create a script file, say <a |
|
|
|
|
<p>To use the obfuscator you should first create a script file, say <a |
|
|
|
|
href="myproject.jos"><tt>myproject.jos</tt></a>. Then you can invoke the |
|
|
|
|
obfuscator with: |
|
|
|
|
<pre> |
|
|
|
|
java jode.obfuscator.Main myproject.jos |
|
|
|
|
</pre> |
|
|
|
|
</pre></p> |
|
|
|
|
|
|
|
|
|
<p>The script file should contain the following options: </p> |
|
|
|
|
|
|
|
|
@ -265,14 +280,13 @@ change the bytecode interface.</p> |
|
|
|
|
<pre> |
|
|
|
|
post = new LocalOptimizer, new RemovePopAnalyzer |
|
|
|
|
</pre> |
|
|
|
|
</td></tr> |
|
|
|
|
</table> |
|
|
|
|
<TABLE width="100%" border="0" cellspacing="0" cellpadding="2" bgcolor="737b9c"> |
|
|
|
|
<TABLE class=footer width="100%" border="0" cellspacing="0" cellpadding="2"> |
|
|
|
|
<TR> |
|
|
|
|
<TD align="center"><FONT color="#ffffff"><SPAN class="titlebar"> |
|
|
|
|
<TD align="center"><SPAN class=footer> |
|
|
|
|
All trademarks and copyrights on this page are properties of their respective owners. <br> |
|
|
|
|
Last updated on 8-May-2000, |
|
|
|
|
Copyright © 1998-2000 by Jochen Hoenicke.</SPAN></FONT> |
|
|
|
|
Last updated on 27-May-2001, |
|
|
|
|
Copyright © 1998-2001 by Jochen Hoenicke. |
|
|
|
|
Canonic URL is <a class=boldlink href="http://jode.sourceforge.net/">http://jode.sourceforge.net/</a></SPAN> |
|
|
|
|
</TD> |
|
|
|
|
</TR> |
|
|
|
|
</TABLE> |
|
|
|
|