Software has an important role in many systems, in particular in critical systems where the correct function of the larger system is of utmost importance. Software malfunction, or software exploits, that allow other system components or an adversary to control the execution of software, can cause significant damage to the system, and hence to what is controlled by the system. Due to the complexity in, and construction of, modern software systems, it is not sufficient to only analyze software source, such as source code, trying to find vulnerabilities that might enable exploits when executing. Instead, software protection must be extended with methods that consider the actual software execution, typically by executing i...