		Obfuscate documentation

A Java bytecode obfuscator
----------------------

This code will obfuscate the Java byte code for Applications and Applets.  It will
obfuscate the byte code contained in class files in the following manner:

	1. It will remove all debugging information contained in your class files.
	2. It may rename all class files referenced by your main class file.
	3. It may rename all class fields contained in your classes.
	4. It may rename all methods in your class files, except the main()
		routine. 

For all classes, fields, and methods, you will have the following three options:
	1. Preserve the original name (do nothing)
	2. Rename the item to an alphabetic sequence (this will still conform to the Java
		language syntax, but will be harder to read).
	3. Rename the item to a number.  Then, even if someone is able 
		to de-compile your code, they will not be able to re-compile it since it will no
		longer conform to the Java language syntax.

Obfuscate is based on the hashjava API, which can be found (including source code) at  
http://www.sbktech.org/hashjava.html.

For your convenience, I have bundled that API into the Obfuscate code so you dont need to set 
it up. If you would, however, like to use a different version of the hashjava API, you can 
simply list it on your CLASSPATH before the Obfuscate file.

Requirements
-----------

To use this program, you must have a 1.0.2 version JVM (see note).

Using the program
---------------

To use the program, follow these steps:

	1. De-archive the Obfuscate.zip or Obfuscate.tar.gz file you downloaded. 
	   DO NOT de-archive the Obfuscate file that is created. This violates the 
	   license agreement.
	2. Move the Obfuscate file into its destination directory.
	3. Run it using this command line:
		java -classpath <classes.zip>[:;]<Obfuscate> Obfuscate [Main class] [Output dir]
	where:
		<classes.zip> is the full path to the java classes file
			distributed with your JVM
		[;;] is the path separator. This is ':' on UNIX and ';' on MSDOS and OS/2 
		<Obfuscate> is the full path to the Obfuscate file
		[Main class] is an optional argument to specify the main class file
		[Output dir] is an optional argument to specify the output directory

	Example (this is what I use on my OS/2 machine):
		java -classpath \java\lib\classes.zip;\Obfuscate Obfuscate
	NOTE: Java is case-sensitive. You MUST use the same capitalization as given here.

If you dont specify the main class file and output directory on the command line, Obfuscate 
will bring up a GUI that will allow you to choose your main class file, specify an output 
directory, and set the obfuscation options. Otherwise, it will use the command line arguments 
and rename all eligible items to numeric values.

Known Limitations
---------------

None at this time.

License Agreement for Obfuscate
--------------------------

I am granting a license for anyone to use and distribute this program
	freely as long as the following conditions are satisfied:

	THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND.
	The author disclaims all warranties expressed or implied for 
		this program. The author shall not be liable for any outcomes
		caused by the use or misuse of this program.
	You may not de-archive the Obfuscate file.
	You may not disassemble, reverse-compile, reverse-assemble, 
		 or alter the files in any manner.
	All files are included in the distribution.
	Acknowledgement is made to Neil Aggarwal, the author.

Use of the program indicates your acceptance of the above license 
	 agreement.


All files in the distribution are Copyright (c) 1997, Neil Aggarwal.

If you like this application and find it useful, please send $15.00 to the author at:

	Neil Aggarwal
	13 Hackamore Court
	Tinton Falls, NJ 07753
	
	Attn: Obfuscate application

Thank you.

Trademark Acknowledgement:
	Java is a trademark of Sun Microsystems, Inc.	

NOTE: This application was developed with the 1.0.2 JDK for OS/2. Although the
Java language is supposed to be platform independent, there are still quirks in the language.
If you run into a bug, please report it with as much documentation as possible.
I will try to work around it.  

For more information
-----------------

For more information and updates to the code, visit the Obfuscate home page at:
	http://www.monmouth.com/~neil/Obfuscate.html
