**RETROGUARD(tm) BYTECODE OBFUSCATOR, CHANGE LOG** --15th May 1998-- Initial Early Access release of RetroGuard (98051500). --25th May 1998-- Second Early Access release of RetroGuard (98052500). (*) The 'Exceptions' attribute is no longer trimmed from classes. Compilers require this attribute, and future VMs may also require it during class verification. (*) Bug-fix related to a certain class of complex inheritance structures. (*) Obfuscated names are now generated so as to minimise identifier length. (*) Java language keywords are introduced as obfuscated names (these are legal at the Java VM level, but illegal at the Java language level). This is to make impossible compilation of decompiled obfuscated classes. (*) Obfuscated names are now heavily overloaded within each method/field namespace. (*) Log file tidied, and a name overloading freqency chart included. --7th June 1998-- Third Early Access release of RetroGuard (98060700). (*) The obfuscated Jar has its manifest file updated with the new class names, and with fresh SHA-1 and MD5 message digests. Other manifest information, such as 'Java-Bean: True', is preserved from the original Jar's manifest. (*) All signature (*.SF) files are deleted from the obfuscated Jar. If the Jar is to be signed, this must be done after obfuscation. (*) Resource files in the Jar (those that are not classes, manifest or signatures) now have their paths updated to correspond to the obfuscated package names of the class files, if this is possible. This is done so that classes can retain access to resources located in their own package/directory. (*) A graphical wizard has been included for the straightforward management of RetroGuard script files. Assuming 'retroguard.jar' is in the classpath, this can be started using the command 'java RGgui'. --15th June 1998-- Version 1.0 commercial release of RetroGuard (98061500). (*) Method and field lists in RGgui are now sorted. (*) Wildcarding over a package now acts on the tree of enclosed inner classes in addition to top-level classes. (*) Logging lists preserved inner class names. --4th July 1998-- Version 1.0.1 commercial release of RetroGuard (98070400). (*) Native methods are automatically reserved from obfuscation. --8th July 1998-- Version 1.0.2 commercial release of RetroGuard (98070800). (*) Bug-fix: regarding inherited retention from retained methods from a class inside the same jar. --21st July 1998-- Version 1.0.3 commercial release of RetroGuard (98072100). (*) Bug-fix: prevent obfuscator from being over-cautious in deciding whether to change a method/field name or not (this never caused breakages in code, but very occasionally left names unchanged). (*) Bug-fix: rgs script parser failed on reading RMI identifiers. --27th July 1998-- Version 1.0.4 commercial release of RetroGuard (98072700). (*) Netscape's VM is inconsistent with the Java VM Specification. This could cause failures in certain obfuscated applets, when run under Netscape. RetroGuard's identifier mapping scheme has now been modified to work around this Netscape VM problem. --11th August 1998-- Version 1.1beta1 commercial release of RetroGuard (98081100). (*) Incremental obfuscation has been introduced to RetroGuard. This, together with the new RGpatch utility, allows obfuscated patch files to be distributed. --1st October 1998-- Version 1.1beta2 commercial release of RetroGuard (98100100). (*) RGconv utility introduced, allowing original->obfuscated name conversion. (*) Minor changes to docs.html. --27th October 1998-- Version 1.1 commercial release of RetroGuard (98102700). (*) Conserves memory when generating manifest file. (*) InnerClasses attribute need not have an inner class name (VMSpec does not specify this). (*) All lists are now alpha-sorted in RGgui. --24th November 1998-- Version 1.1.1 commercial release of RetroGuard (98112400). (*) RetroGuard was being overly strict in enforcing classfile format, resulting in an incorrect fatal Exception being thrown (very infrequent under JDK1.1, more common under JDK1.2) - fixed. --12th December 1998-- Version 1.1.2 commercial release of RetroGuard (98121200). (*) RetroGuard now passes all manifest sections. This behavior change allows JDK1.2 manifest entries, like "Main-Class:", to be preserved. --21st March 1999-- Version 1.1.3 commercial release of RetroGuard (99032100). (*) References to arrays of obfuscated classes are now remapped correctly in all cases. --1st August 1999-- Version 1.1.4 Open Source release of RetroGuard (99080100). (*) RetroGuard is officially released to the public domain under the Lesser GPL.