Decompilation of Java bytecode is the act of transforming Java bytecode to Java source code. Although easier than that of decompilation of machine code, problems still arise in Java bytecode decompilation. These include type inference of local variables and exception-handling.
We evaluate the currently available Java bytecode decompilers using an extension of the criteria used in a previous original study. Although there has been a slight improvement since this study, it was found that none passed all of the tests, each of which were designed to target different problem areas.
Decompilation and other attacks on software are problems for the software industry, with the global revenue loss due to software piracy estimated to be more than $50 billion in 2008. We present a survey of a specific software protection techniques - software watermarking - in the context of Java decompilers.
Software watermarks can be used to prove ownership of stolen software. However, many watermarks are easily removed rendering their protection useless.
We evaluate static watermarking techniques, highlight their failings and present directions for future work.