1. A method comprising: during execution of a program, identifying a first flow control instruction in the program, the first instruction associated with a first program address at which program execution will continue after execution of the first instruction; determining if the first program address is protected; and if the first program address is protected, substituting a first alternate program address for the first program address such that program execution will continue at the first alternate program address after execution of the first instruction.