Software programs are subject to complex and evolving attacks by malware seeking to gain control of computer systems. These attacks can take on a variety of different forms ranging from attempts to crash the software program to subversion of the program for alternate purposes. Additionally, it is particularly difficult to protect the run-time data of the program. The protection of this run-time data is especially important when it involves the program's secrets and configuration information or digital rights protection keying material needed by applications to protect content in main memory and while in transit.