From cf5477df8a32d9885be1b5069479b46b5193dfe3 Mon Sep 17 00:00:00 2001
From: jochen This information was submitted by Mihail Popescu
+ Go to the View/Internet Options... dialog
+http://www.informatik.uni-oldenburg.de/~delwi/jode/applet.html, last
+updated on 24-Okt-1999. This information was submitted by Mihail Popescu
+ Go to the View/Internet Options... dialog
+http://www.informatik.uni-oldenburg.de/~delwi/jode/applet.html, last
+updated on 24-Okt-1999.
+http://www.informatik.uni-oldenburg.de/~delwi/jode/download.html, last
+updated on 24-Okt-1999. Someday I found Now while it was working, it was not easy to use. You had to
+decompile the code first with a disassembler, cut the method, you
+wanted to decompile and then run the perl script on it. So I decided
+to get some information of the class files and do this all
+automatically. I decided to write it in Just for the records: the java code is now more than 50 times
+bigger than the original perl script and is still growing.
+http://www.informatik.uni-oldenburg.de/~delwi/jode/history.html, last
+updated on 24-Okt-1999.
+
+
+
+
+
+
+
+
+Homepage
+
+
+
+Jode
+
+
+
+The JODE Applet
+
+
http://www.informatik.uni-oldenburg.de
+
+Press the start button to decompile Michael's Plasma
+applet. 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.
+
+Save probably doesn't work, because it is forbidden by the browser.
+
+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.
+
+
+ Removing security restrictions with Internet Explorer
+
+
+Select the "Security" tab
+
+
+
+
+
+
+
+
+
+
+
+
+Homepage
+
+
+
+Jode
+
+
+
+The JODE Applet
+
+
http://www.informatik.uni-oldenburg.de
+
+Press the start button to decompile Michael's Plasma
+applet. 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.
+
+Save probably doesn't work, because it is forbidden by the browser.
+
+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.
+
+
+ Removing security restrictions under Internet Explorer
+
+
+Select the "Security" tab
+
+
+
+
+
+
+
+
+
+
+
+
+Homepage
+
+
+
+Jode
+
+
+
+
+Download
+The simplest way is to get it in precompiled form. I have two jar
+archives:
+
+
+
+
+jode-@VERSION@.tar.gz is the source
+code. You need many unix tools to compile this file. It also works
+under windows with cygwin and unzip.
+
+Other packages you may need
+
+
+
+
+
+
+
+
+
+
+
+
+
+Homepage
+
+
+
+Jode
+
+
+
+
+Why did I wrote it?
+
+guavad
, a disassembler for java byte
+code (it does similar things like javap -c
). I used
+it on a class file, and found that it was possible to reconstruct the
+original java code. First I did it by hand on some small routines,
+but I soon realized that it was a rather stupid task, and that I could
+write a perl
script
+that does the same. At the end of the next day I had a working
+decompiler.java
now,
+because it suited best.
+
+Test Applet
-
-
-
-Press the start button to decompile this applet. You may change the
-class path 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.
-
-Save probably doesn't work, because it is forbidden by the browser.
-
-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.
-
-BTW: If you just want to read the source, you may browse it
-online :-)
-
-You can download this, look here for
-a description.
-
-
-
diff --git a/jode/doc/jode-logo.gif b/jode/doc/jode-logo.gif
new file mode 100644
index 0000000000000000000000000000000000000000..e22ca73259daa28d8197f7b70bfd380bbf92523f
GIT binary patch
literal 5809
zcmb7{2|JXH!^Q7=hFNYdjTy^Wn?YGZ#xBx~C6j$$i?M_(Wl2
+ | + |
+Homepage
+ + +Jode +
|
+
+License+ +JODE is Copyright 1998,1999 by Jochen Hoenicke. It is +released under GNU GPL. That basically means, that you can copy or +modify this code, as long as you put all your modification under the +GPL again. Here is the complete license: + +Table of Contents+ + ++ + + + + + + + GNU GENERAL PUBLIC LICENSE++Version 2, June 1991 + + + ++Copyright (C) 1989, 1991 Free Software Foundation, Inc. +59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. ++ + + + Preamble+ ++ The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + ++ When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + ++ To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + ++ For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + ++ We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + ++ Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + ++ Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + ++ The precise terms and conditions for copying, distribution and +modification follow. + + + + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION+ + ++ +0. + This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + + +1. + You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + +2. + You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + +
+ +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + + +3. + You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + + + +
+ +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + +4. + You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + + +5. + You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + + +6. + Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + + +7. + If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + + +8. + If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + + +9. + The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + + + +10. + If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + + + NO WARRANTY + ++ +11. + BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + + +12. + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + + + + END OF TERMS AND CONDITIONS+ + + +How to Apply These Terms to Your New Programs+ ++ If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + ++ To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + ++one line to give the program's name and an idea of what it does. +Copyright (C) yyyy name of author + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ + +Also add information on how to contact you by electronic and paper mail. + + ++If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + + ++Gnomovision version 69, Copyright (C) yyyy name of author +Gnomovision comes with ABSOLUTELY NO WARRANTY; for details +type `show w'. This is free software, and you are welcome +to redistribute it under certain conditions; type `show c' +for details. ++ + +The hypothetical commands `show w' and `show c' should show +the appropriate parts of the General Public License. Of course, the +commands you use may be called something other than `show w' and +`show c'; they could even be mouse-clicks or menu items--whatever +suits your program. + + ++You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + + ++Yoyodyne, Inc., hereby disclaims all copyright +interest in the program `Gnomovision' +(which makes passes at compilers) written +by James Hacker. + +signature of Ty Coon, 1 April 1989 +Ty Coon, President of Vice ++ + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. + |
+
+http://www.informatik.uni-oldenburg.de/~delwi/jode/history.html, last +updated on 24-Okt-1999.
+ + + diff --git a/jode/doc/myproject.jos b/jode/doc/myproject.jos new file mode 100644 index 0000000..285f779 --- /dev/null +++ b/jode/doc/myproject.jos @@ -0,0 +1,28 @@ +# This is a sample script file to obfuscate my project + +strip = "unreach","lvt","inner" + +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.+ | + |
+Homepage
+ +Jode +
+ |
+
+
+Using the Decompiler+After you have downloaded the necessary +packages, put them into your CLASSPATH: + +
Command Line Interface+ +The most powerful way to start JODE's decompiler is the command +line interface. Some people don't like long command lines; they +should go to the next section.+ +Start the class jode.Decompiler with the options. The +following command will give a complete list of the available commands: + + java jode.Decompiler --help+ + AWT Interface+ +The AWT Interface looks exactly like the applet. In fact the applet uses the AWT +Interface. You start it after setting the CLASSPATH (see above), with +java jode.JodeWindow+ +In the classpath line you can enter a number of jar files, zip files +and directories separated by comma(,). Then enter the +dot(.) separated name of the class you want to decompile. +Press the start button and the decompiled class should
+appear. You can save it via the save button.
+
+Swing Interface+ +For the swing interface you need java version 1.2 or the separately +available swing package (see download +page.+ +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. + +The swing interface is very nice, if you just want to work how +something works, and you don't have the source code. It is especially +useful to trace bugs through library code. It is not meant to +generate java files and so you won't find a save option +there. + + Using the Obfuscator+ +To use the obfuscator you have to create a script file, say myproject.jos, with +the following contents (You have to adapt it to match your project, of +course). It should contain the following options: + +First select what you want to strip. There are several +possibilities, which can be separated by comma(,): +
+strip = "unreach","lvt","inner" ++ + Select the packages and classes you want to obfuscate. You +should only include libraries, that you don't ship separately. ++load = new WildCard { value = "org.myorg.myproject" }, + new WildCard { value = "org.myorg.mylib*" }, + new WildCard { value = "org.otherorg.shortlib" } ++ + Select the methods and classes you want to preserve. This is
+the main method for applications and the default constructor
+<init>.()V for applets, resource bundles and other classes
+that you load manually at runtime. +preserve = new WildCard { value = "org.myorg.application.main.*" }, + new WildCard { value = "org.myorg.applet.<init>.()V" }, + new WildCard { value = "org.resources.bundle*.<init>.()V" } ++ + If you want to obfuscate (or just shorten) the identifier you can +specify a renamer. There are currently following renamer +available +
+renamer = new KeywordRenamer ++ + + Now you can select the analyzer. The purpose of the +analyzer is to mark all reachable methods, find out which methods +needs to get the same name (overloading), and which method names +mustn't change (overload of library methods, e.g. nextElement +for Enumerations). There are currently two analyzers. +
+analyzer = new SimpleAnalyzer ++ + Pre- and Post transformers transform the bytecode before +resp. after the Analyzer runs. Using this defaults should be +okay. ++post = new LocalOptimizer, new RemovePopAnalyzer ++ + |
+
+http://www.informatik.uni-oldenburg.de/~delwi/jode/usage.html, last +updated on 24-Okt-1999.
+ + + +