decompiler and applet changed the package git-svn-id: https://svn.code.sf.net/p/jode/code/trunk@1197 379699f6-c40d-0410-875b-85095c16579ebranch_1_1
parent
80e2a7916c
commit
23d5d05fe3
@ -1,95 +0,0 @@ |
|||||||
<!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,110 @@ |
|||||||
|
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN"> |
||||||
|
<html> |
||||||
|
<head> |
||||||
|
<title>Java Optimize and Decompile Environment (JODE)</title> |
||||||
|
<meta name="description" content="The home page of jode, my Java decompiler."> |
||||||
|
<meta name="author" content="Jochen Hoenicke"> |
||||||
|
<meta name="robots" content="noindex"> |
||||||
|
<meta name="robots" content="nofollow"> |
||||||
|
<meta name="date" content="1999-10-24"> |
||||||
|
</head> |
||||||
|
|
||||||
|
<body> |
||||||
|
<table cellpadding=4 cellspacing=1 width=100%> |
||||||
|
<tr> |
||||||
|
<td></td> |
||||||
|
<td> <img src="jode-logo.png" 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><a href="history.html">History</a></li> |
||||||
|
<li>Blue Sky</li> |
||||||
|
</ul> |
||||||
|
</td> |
||||||
|
<td> |
||||||
|
<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 plans here are to look 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 fields 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 |
||||||
|
take them and back into the java code. </p> |
||||||
|
</td> |
||||||
|
</table> |
||||||
|
|
||||||
|
<hr> |
||||||
|
|
||||||
|
<p><A HREF="mailto:Jochen.Hoenicke@Informatik.Uni-Oldenburg.DE"> |
||||||
|
http://www.informatik.uni-oldenburg.de/~delwi/jode/jode.html</A>, last |
||||||
|
updated on <em>24-Okt-1999</em>.</p> |
||||||
|
|
||||||
|
</body> |
||||||
|
</html> |
Loading…
Reference in new issue