Smokescreen is a Java obfuscator. Aside from being able to change symbolic names, it can also modify the bytecode instructions in methods thereby obfuscating control flow. This makes the resulting obfuscated classes much more difficult to decompile.
Smokescreen works on class files in directories as well as zip or jar archives. It allows for selective obfuscation of the symbolic names depending on the access level of the class, method or field. Removal of unused methods and fields can also be done by Smokescreen. Smokescreen also performs control flow obfuscation by modifying the bytecode instructions in the class methods. The program features an easy to use graphic user interface as well as a command line option.
The following changes or additions have been made in Smokescreen 3.4:
1) Support for JDK 5.0.
2) String encryption.