You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
133 lines
5.6 KiB
133 lines
5.6 KiB
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN">
|
|
<html>
|
|
<head>
|
|
<title>Java Optimize and Decompile Environment (JODE)</title>
|
|
<meta name="date" content="2000-06-30">
|
|
<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">
|
|
</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">
|
|
<h1>Blue Sky</h1>
|
|
|
|
<p>This section contains features that I think would be great to have,
|
|
but are also very hard to implement. The name of the section is
|
|
inspired, by <a
|
|
href="http://www.mozilla.org/blue-sky/">Mozilla</a>.</p>
|
|
|
|
<p>Currently this are all my own ideas. But if you send me an idea
|
|
for an interesting feature, I will add it to this list.</p>
|
|
|
|
<h2><i>Out</i>line inlined methods</h2>
|
|
|
|
<p>If java gets called with `<code>-O</code>' switch, it inlines methods,
|
|
that are private, final, or static and contain no loops. When
|
|
decompiling this it sometimes produces really ugly code. The right
|
|
way to solve this would be to <i>out</i>line the code again. This is
|
|
possible but requires to find the inlined method. </p>
|
|
|
|
<p>The name `outline' was suggested by <a
|
|
href="http://www.informatik.uni-oldenburg.de/~mw">Michael</a>.
|
|
</p>
|
|
|
|
<h2>Better names of local variables</h2>
|
|
|
|
<p>The local variable naming is very stupid. Even with pretty it just
|
|
names the variable after the type with a unifying number appended. A
|
|
method containing very much objects of the same type looks very
|
|
ugly. </p>
|
|
|
|
<p>My plan is looking at the assignments. If we have locals in
|
|
assignments
|
|
<pre>
|
|
int l_1 = array.length
|
|
String l_2 = object.getName()
|
|
</pre>
|
|
we could name them "length" and "name". If we
|
|
have assignments:
|
|
<pre>
|
|
MenuItem local_1 = new MenuItem("Open");
|
|
MenuItem local_2 = new MenuItem("Save");
|
|
</pre>
|
|
good names would be <code>miOpen</code> and <code>miSave</code>. </p>
|
|
|
|
<p>It is currently possible to assign a <i>(hint name,type)</i> pair
|
|
to a local. If the type matches, the local will be named after
|
|
<i>hint name</i>. This could be extended by giving them several
|
|
weighted hints and constructing the name in an intelligent way. </p>
|
|
|
|
<h2>Better deobfuscation features</h2>
|
|
<p>First there should be a good Renamer: Methods that simply
|
|
return a field value should be renamed to get<i>FieldName</i>.
|
|
Fields should be named after their type, maybe also by assignments
|
|
(see section about local variable names).</p>
|
|
|
|
<p>The deobfuscator should detect inner and anonymous variables,
|
|
synthetic methods and so on, and rename them accordingly.</p>
|
|
|
|
<h2>Handling of Class.forName in obfuscator</h2>
|
|
<p>The obfuscator should detect Class.forName constructs (and
|
|
similarly for methods and fields) and if their parameters are constant
|
|
it should change the parameter according to the rename function. </p>
|
|
|
|
<h2>Merging javadoc comments</h2>
|
|
<p>It would be nice if the decompiler could merge the javadoc comments
|
|
into the class file. More and more people use javadoc to comment the
|
|
public api of their java classes. It shouldn't be too difficult to
|
|
copy them back into the java code. </p>
|
|
|
|
<p>This doesn't need to be built into the decompiler. A script that takes
|
|
the javadoc pages and the decompiled code can easily merge them.</p>
|
|
</td></tr>
|
|
</table>
|
|
<TABLE width="100%" border="0" cellspacing="0" cellpadding="2" bgcolor="737b9c">
|
|
<TR>
|
|
<TD align="center"><FONT color="#ffffff"><SPAN class="titlebar">
|
|
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>
|
|
</TD>
|
|
</TR>
|
|
</TABLE>
|
|
|
|
</BODY>
|
|
</HTML>
|
|
|