As the dependence on more complex and powerful software constantly grows, so does the need to protect that software from tampering and reverse engineering. The software security industry is locked in a constant arms race between reverse engineers and security engineers. Therefore, security engineers must meet the challenge of staying one step ahead of the attacker by developing technologies that defeat the efforts of available reverse engineering tools. A recent development in the effort to thwart reverse engineering is the use of virtual machines in software protection mechanisms; this technique has proven to be quite effective in protecting secrets in applications. Attempting to reverse engineer the protected code requires first reverse engineering the virtual machine used. Unfortunately, the use of virtualization incurs a hefty penalty on execution speed, with the performance of the protected application reduced by orders of magnitude. This document proposes a solution to create a virtual machine protection technology that will greatly improve performance of the protection and increase the difficulty of reverse engineering the protection. This will be accomplished through taking advantage of our existing state-of-the-art static and dynamic analysis tools to automatically craft a unique virtual machine architecture for each application protected.
Keywords: Virtual Machine, Static Analysis, Dynamic Analysis, Reverse Engineering, Instruction Set Architecture