Change Log - Version 6.3.1 - Release Date December 15, 2009


  • Control Flow obfuscation is now applied to methods that contain exception handlers and synchronized blocks.
  • Control Flow, String Encryption, and Optimization now use a combination of includes and excludes to determine methods to be obfuscated. A method must be on the list of included methods and not on the list of excluded ones.
    If the include list is empty it is equivalent to including all methods.
    If the exclude list is empty then nothing is excluded.
  • Preverification phase can now pass the -nofinalize, -nofp, and -nonative options to the preverifier executable.
  • When obfuscating a jar that has been signed the signing information is now removed. The jar will have to be re-signed after obfuscation.


  • DashO reflection detection now reports on Class and Member methods that either take or return Strings since the obfuscated programs behavior could be affected by their use.
  • Constant pool entry can now be changed in evaluation versions of DashO.
  • In the evaluation version of DashO, the output program will expire at the end of the evaluation period. If the evaluation period is extended, you will need to run your DashO builds again to prevent your output from expiring.
  • If String Encryption is enabled but the include list is empty all classes will have their strings encrypted. Previously no strings would be encrypted.

Note for String Encryption

  • Prior to the addition of the <excludelist> for String Encryption it was recommended that a regular expression negative lookahead pattern be used to exclude one or more items from String Encryption. For example -


    The limitation of this technique was that the negative lookahead had to be last <includelist> entry and any entries following it may not work as expected since the actual pattern being matched is ".*" i.e. everything. If any of your projects contains regular expression of this type we recommend moving them to the list of excluded patterns rather than leaving them in the include list. If you choose to leave the expression in the include list your DashO project behavior will not change.