Both Java and . NET use the idea of a "virtual machine" (VM) rather than a true executable. While very useful for some purposes, VMs make your source code and hence your intellectual property (IP) inherently less secure because the process can be reversed or "decompiled". This book is useful because you must understand how decompilation works in order to properly protect your IP. Anyone interested in protecting Java code from prying eyes will want to buy this one of a kind book as it separates fact from fiction about just how ineffective obfuscators are at protecting your corporate secrets. While it is very easy for anyone to decompile Java code and almost as easy to run it through an obfuscation protection tool, there is very little information on just what happens when you do this. How secure is your code after you run an obfuscator, for example? To answer these questions requires a greater understanding of the Java bytecodes and the Java Virtual Machine (JVM) than in any book yet published.
This book redresses the imbalance by providing insights into the features and limitations of todays decompilers and obfuscators, as well as offering a detailed look at what JVMs actually do. Virtual machine is the computer science term used when (most often in an attempt to gain greater portability) you create an abstract "virtual processor" and write code for it instead of having your compiler generate actual machine language for a chip like the Pentium 4. You then write a relatively small piece of code for each real processor you want the code to run. This translates the virtual machine language to the real machine language of your processor. The intermediary code for the virtual machine is what can more easily be decompiled, although with a loss of security, since in order for the code to be converted to real machine language it must be relatively transparent and not just a sequence of 0s and 1s!