git-svn-id: https://svn.code.sf.net/p/jode/code/trunk@1214 379699f6-c40d-0410-875b-85095c16579ebranch_1_1
parent
1e661ada97
commit
3aa4b59217
@ -1,13 +1,14 @@ |
||||
## Input file for automake to generate the Makefile.in used by configure
|
||||
|
||||
EXTRA_DIST = \
|
||||
applet.html.in \ |
||||
applet.html \ |
||||
download.html.in \ |
||||
frame.html \ |
||||
history.html \ |
||||
jode.html \ |
||||
license.html \ |
||||
links.html \ |
||||
usage.html \ |
||||
myproject.jos \ |
||||
dasm_to_java.perl \ |
||||
gimp/jode-logo.xcf \ |
||||
jode-logo.gif |
||||
|
@ -0,0 +1,68 @@ |
||||
<!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="2000-01-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><a href="history.html">History</a></li> |
||||
<li>Links</li> |
||||
<li><a href="bluesky.html">Blue Sky</a></li> |
||||
</ul> |
||||
</td> |
||||
<td> |
||||
<h1><i>JODE</i> Links</h1> |
||||
<h3>Other decompilers</h3> |
||||
<ul> |
||||
<li>A list of decompilers can be found at <a href="http://www.meurrens.org/ip-Links/Java/CodeEngineering/#tocDecompilersToJava">Marc Meurren's list</a> |
||||
</li> |
||||
<li>A very fast decompiler is <a |
||||
href="http://www.geocities.com/SiliconValley/Bridge/8617/jad.html">jad</a> |
||||
written in C++. It doesn't come with source code though, and misses |
||||
some features <i>JODE</i> has ;-)</li> <li><a |
||||
href="http://www.javaworld.com/javaworld/jw-07-1997/jw-07-decompilers.html">A |
||||
comparison of three decompilers</a> (but not <i>JODE</i>) was done by Dave |
||||
Dyer. |
||||
</ul> |
||||
<h3>Other obfuscators</h3> |
||||
<ul> |
||||
<li><a href="http://www.sbktech.org/hashjava_old.html">Hashjava</a> is another free obfuscator. It is no longer maintained, though, since its successor was commercialized.</li> |
||||
<li><a href="http://www.zelix.com/klassmaster/index.html">Zelix |
||||
Klassmaster</a> does a very good flow optimization and also decrypts |
||||
strings. But <i>JODE</i> can now undo both.</li> |
||||
</ul> |
||||
<h3>Graphical User Interface</h3> |
||||
<ul> |
||||
<li><i>JODE</i> is now used by the <a |
||||
href="http://www.icg-online.de/jedit/JavaInsight.html">JavaInsight plugin</a> for |
||||
<a href="http://www.gjt.org/~sp/jedit.html">jEdit</a>.</li> |
||||
</ul> |
||||
</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-Jan-2000</em>.</p> |
||||
|
||||
</body> |
||||
</html> |
||||
|
@ -1,28 +1,52 @@ |
||||
# This is a sample script file to obfuscate my project |
||||
|
||||
# The class path should include everything that is needed to run the |
||||
# project. Don't forget the java base classes (rt.jar or classes.zip). |
||||
classpath = "c:\\jdk1.2\\jre\\lib\\rt.jar","d:\\project\\java" |
||||
|
||||
# The jar, zip file or directory in which the obfuscated class files |
||||
# should be written. |
||||
dest = "obfuscated.zip" |
||||
|
||||
# Write the reverse translation table to translat.tbl. With the help of |
||||
# this table you can later undo the renaming. |
||||
revtable = "translat.tbl" |
||||
|
||||
strip = "unreach","lvt","inner" |
||||
|
||||
# this variable will tell, which classes and packages should be included |
||||
# in the obfuscated.jar package. |
||||
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" }, |
||||
# this variable will tell, which classes and packages must not be |
||||
# renamed. |
||||
preserve = new WildCard { value = "org.myorg.ApplicationClass.main.*" }, |
||||
new WildCard { value = "org.myorg.AppletClass.<init>.()V" }, |
||||
new WildCard { value = "org.resources.BundleClass*.<init>.()V" }, |
||||
new MultiIdentifierMatcher { |
||||
and = new WildCard { value = "org.myorg.publiclib.*" }, |
||||
new ModifierMatcher { access = "PUBLIC" } |
||||
} |
||||
|
||||
renamer = new KeywordRenamer { |
||||
backup = new StrongRenamer { |
||||
charsetStart = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" |
||||
charsetPart = |
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_" |
||||
# There are different renamers currently. This is just an example that |
||||
# produces very good obfuscated code, that is still valid bytecode. |
||||
renamer = new StrongRenamer { |
||||
charsetStart = "aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ" |
||||
charsetPart = "aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ0123456789_$" |
||||
charsetPackage = "abcdefghijklmnopqrstuvwxyz" |
||||
charsetClass = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" |
||||
} |
||||
charsetClass = "abcdefghijklmnopqrstuvwxyz" |
||||
} |
||||
|
||||
analyzer = new SimpleAnalyzer |
||||
# The constant analyzer does a great job to remove constant fields and |
||||
# deadcode. E.g. if you obfuscate the decompiler applet it will |
||||
# remove the whole debugging code, since the applet doesn't need it. |
||||
analyzer = new ConstantAnalyzer |
||||
|
||||
# The LocalOptimizer will reorder local variables to use fewer slots. |
||||
# It may still have some bugs, so remove it if your applet doesn't |
||||
# work (and send me the class). |
||||
# The RemovePopAnalyzer will remove instructions that were optimized |
||||
# away by the ConstantAnalyzer and LocalOptimizer. |
||||
post = new LocalOptimizer, new RemovePopAnalyzer |
||||
|
Loading…
Reference in new issue