Software Protection through Dynamic Code Mutation

Matias Madou, Bertrand Anckaert, Bjorn De Sutter and Koen De Bosschere
Department of Electronics and Information Systems
University of Ghent
B-9000 Ghent, Belgium

Patrick Moseley and Saumya Debray
Department of Computer Science
University of Arizona
Tucson, AZ 85721, U.S.A.

Abstract
Reverse engineering of executable programs, by disassembling them and then using program analyses to recover high level semantic information, plays an important role in attacks against software systems, and can facilitate software piracy. This paper introduces a novel technique to complicate reverse engineering. The idea is to change the program code repeatedly as it executes, thereby thwarting correct disassembly. The technique can be made as secure as the least secure component of opaque variables and pseudorandom number generators.