Revision history

Smokescreen home
Revision history
User guide
Installation guide
Obfuscation notes
Directives file
Incremental obfuscation
Buildtool integration
Watermarking
License and download
Purchase
Faqs/Known issues
Email
Release List

Revision 3.73 (18 September 2010)
Additions/changes:
1) Fixed a bug preventing the selection of jar files for obfuscation.

Revision 3.72 (4 August 2010)
Additions/changes:
1) The size of obfuscated files that use string encryption has been reduced.

Revision 3.71 (22 February 2010)
Additions/changes:
1) Minor improvements to flow obfuscation.

Revision 3.7 (1 December 2009)
Additions/changes:
1) Insertion and retrieval of watermarks using the 'watermark_string', 'watermark_password' and 'read_watermarks' directives.
2) Fixed a bug where Smokescreen will stop with an error in rare cases, due to an incorrect calculation of method stack size.

Revision 3.61 (29 October 2008)
Additions/changes:
1) Fixed a bug that caused the obfuscator to stop with an error message, when encountering an interface with more than one super-interface.

Revision 3.6 (21 April 2008)
Additions/changes:
1) The format of directives has been simplified.
2) New directives 'ignore_native' and 'preserve_class' added.
3) Directives can now be entered as options through the command line.
4) Two api methods introduced to perform the obfuscation.
5) The path to the log file can now be specified.

Revision 3.56 (15 March 2008)
Additions/changes:
1) Fixed bug where class files are not accepted as external classes when using the 'superclass_path' directive.

Revision 3.55 (23 February 2008)
Additions/changes:
1) Fixed bug where a class constant with an array descriptor in the class name, causes Smokescreen to stop with an error.

Revision 3.54 (1 November 2007)
Additions/changes:
1) Fixed bug where the obfuscator is unable to make a stack map table entry for an ambiguous array type.

Revision 3.53 (27 May 2007)
Additions/changes:
1) Fixed bug so that classes which implement an interface having "java/io/Serializable" as a super-interface are now also treated as serializable.

Revision 3.52 (6 May 2007)
Additions/changes:
1) Includes support for Java 6 class files.

Revision 3.51 (18 April 2007)
Additions/changes:
1) Supports package renaming.

Revision 3.5 (2 June 2006)
Additions/changes:
1) Supports unused class removal. This is specified through the GUI, or using the new "* classes remove_unused" directive in the directives file.

Revision 3.46 (15 Mar 2006)
Additions/changes:
1) Retains the original method names for compiler generated methods in enum classes.

Revision 3.45 (4 Mar 2006)
Additions/changes:
1) Includes a fix to correctly rename method references for arrays.

Revision 3.44 (1 Mar 2006)
Additions/changes:
1) Includes a fix for a null pointer exception when processing "Enclosing Method Attributes" that do not specify a method.

Revision 3.43 (28 Dec 2005)
Additions/changes:
1) Includes a fix to correctly log unchanged symbolic names in the log file, instead of logging 'null' as the new name.
2) Adds some exclusions to method and field renaming, for supporting Serialization and RMI.
3) Unused constructors are removed if method removal is specified.
4) If a change record file is used, it will have priority over other settings for name obfuscation.
5) Any method or field that is renamed based on a change record file will not be removed.
6) Smokescreen has been built using JDK 1.3.

Revision 3.42 (12 Oct 2005)
Additions/changes:
1) Includes a fix for an array index out of bounds exception in the obfuscated application when it only contains null strings, and uses string encryption.

Revision 3.41 (8 Jan 2005)
Additions/changes:
1) Includes a fix for Smokescreen ignoring exclusion directives in rev 3.4.

Revision 3.4 (18 Oct 2004)
Additions/changes:
1) Support for JDK 5.0.
2) String encryption.

Revision 3.33 (27 Dec 2003)
Additions/changes:
1) Minor improvements to speed up obfuscation.
Revision 3.32 (4 Dec 2003)
Additions/changes:
1) A bug fix for an error that is reported when obfuscating a class that does not have a superclass.

Revision 3.31 (13 Sep 2003)
Additions/changes:
1) A bug fix for an error that is reported when a referenced method is not declared in an interface but is declared in its super-interface.
2) Minor improvements to bytecode obfuscation.

Revision 3.3 (22 March 2003)
Additions/changes:
1) Improvements in the removal of unused methods and fields.
2) When launched without the GUI Smokescreen will now provide a return-code on exit, to indicate if an error had occurred. This return-code can be used in build tools such as ANT to determine if an error occured during obfuscation.
3) The 'use_change_record' directive has been added, which allows the use of a previous log file as an input record record file, to perform renamings that are consistent with a previous obfuscation. This feature is useful for performing incremental obfuscation.

Revision 3.2 (12 February 2003)
Additions/changes:
1) Fixes a bug where a method in a superclass is renamed even though it has the same name as a method in an external interface.
2) Removes unused constants from the constant pool.
3) Renaming is done more efficiently.
4) Allows use of the "*" character as a wildcard character when specifying exclusions for class, method, and field renaming in the directives file.
5) Introduces a new directive "all_names_in_class" to exclude the class name, all method names and all field names for a particular class when renaming.
6) Introduces a new directive "use_class_loader_for_superclasses" to indicate that superclasses may be found in the search path used to load classes.

Revision 3.11 (4 November 2002)
Additions/changes:
1) Fixes a bug where a null pointer exception is reported when the manifest of the source jar file does not contain a "Main-Class" attribute.
2) Fixes a bug where an external interface method reference may be renamed when it shouldn't.
3) Includes improvements to bytecode obfuscation.

Revision 3.1 (1 September 2002)
Additions/changes:
1) Smokescreen will now accept super classes that are located inside zip files.
2) Smokescreen can now obfuscate classes in zip or jar files.
3) The dot ('.') and forward slash ('/') can both be used as a package separator in the directives file.
4) Minor changes have been made to work properly with Microsoft's compiler and JVM.

Revision 3.0 (December 2001)
Additions/changes:
1) Smokescreen can now be run from the command line without the GUI. Obfuscation options are specified using a directives file.
2) Smokescreen now does not ask for confirmation before creating a destination directory, if one does not already exist.
3) When using a directives file with the GUI, the directives file must contain all the information (such as directory locations) normally specified via the GUI.
4) This revision includes a fix for a bug where an interface method is not renamed consistently with its super method in the super interface.
5) The format of the log file has been revised to provide more information.

Revision 2.3 (September 2001)
Smokescreen 2.3 includes improvements for "Bytecode" obfuscation. Ver 2.3 also fixes a problem in rev 2.2, where obfuscated applets might not run properly on some browsers.

Revision 2.2 (July 2001)
Smokescreen 2.2 includes minor improvements for Bytecode obfuscation. Registration codes for earlier revisions can be used to install a registered copy of Smokescreen 2.2.

Revision 2.1 (April 2001)
Smokescreen 2.1 includes a fix for a "Bad file descriptor" error message that may show up on some installations. Registration codes for revision 2.0 can be used to install a registered copy of Smokescreen 2.1.

Revision 2.0 (February 2001)
Smokescreen 2.0 works with packages, by obfuscating class files in the subdirectories of the source directory. The package names and directory structure are duplicated in the destination directory. This allows for the obfuscation of packages contained in the source directory. This revision of the software can also work with a 'directives' file for specifying obfuscation parameters. The directives file is be used to specify the obfuscation settings that would normally be specified using the menu bar. Class, method or field names that should be excluded from obfuscation can also be specified in the directives file. Note that registration codes for earlier revisions of Smokescreen will not work with version 2.0.

Revision 1.1 (December 2000)
Smokescreen 1.1 has a fix to eliminate a problem with the application not launching properly in some non Win98 operating systems. Valid registration codes for Smokescreen 1.0 may be used to install Smokescreen 1.1 at no extra charge.

Revision 1.0 (July 2000)
First release of Smokescreen.