1. A method of protecting a software program for execution on hardware, the method comprising: including in the program at least one corruption function having a starting location; including in the program at least one instruction that upon execution on hardware, causes the program to be directed to the corruption function; including in the program additional code that, upon execution on hardware, causes the program to set an available breakpoint such that, when the starting location is reached during execution on hardware, an exception is generated and the handling of the exception causes the corruption function not to run.