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
|
## Input file for automake to generate the Makefile.in used by configure
|
||||||
|
|
||||||
EXTRA_DIST = \
|
EXTRA_DIST = \
|
||||||
applet.html.in \ |
applet.html \ |
||||||
download.html.in \ |
download.html.in \ |
||||||
frame.html \ |
|
||||||
history.html \ |
history.html \ |
||||||
jode.html \ |
jode.html \ |
||||||
license.html \ |
license.html \ |
||||||
|
links.html \ |
||||||
usage.html \ |
usage.html \ |
||||||
myproject.jos \ |
myproject.jos \ |
||||||
dasm_to_java.perl \ |
dasm_to_java.perl \ |
||||||
|
gimp/jode-logo.xcf \ |
||||||
jode-logo.gif |
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 |
# 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" |
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" }, |
load = new WildCard { value = "org.myorg.myproject" }, |
||||||
new WildCard { value = "org.myorg.mylib*" }, |
new WildCard { value = "org.myorg.mylib*" }, |
||||||
new WildCard { value = "org.otherorg.shortlib" } |
new WildCard { value = "org.otherorg.shortlib" } |
||||||
|
|
||||||
preserve = new WildCard { value = "org.myorg.application.main.*" }, |
# this variable will tell, which classes and packages must not be |
||||||
new WildCard { value = "org.myorg.applet.<init>.()V" }, |
# renamed. |
||||||
new WildCard { value = "org.resources.bundle*.<init>.()V" }, |
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 { |
new MultiIdentifierMatcher { |
||||||
and = new WildCard { value = "org.myorg.publiclib.*" }, |
and = new WildCard { value = "org.myorg.publiclib.*" }, |
||||||
new ModifierMatcher { access = "PUBLIC" } |
new ModifierMatcher { access = "PUBLIC" } |
||||||
} |
} |
||||||
|
|
||||||
renamer = new KeywordRenamer { |
# There are different renamers currently. This is just an example that |
||||||
backup = new StrongRenamer { |
# produces very good obfuscated code, that is still valid bytecode. |
||||||
charsetStart = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" |
renamer = new StrongRenamer { |
||||||
charsetPart = |
charsetStart = "aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ" |
||||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_" |
charsetPart = "aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ0123456789_$" |
||||||
charsetPackage = "abcdefghijklmnopqrstuvwxyz" |
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 |
post = new LocalOptimizer, new RemovePopAnalyzer |
||||||
|
Loading…
Reference in new issue