1. A method comprising: (a) inserting a plurality of correctors into object code of a program embodied on a non-transitory computer-readable medium; (b) assigning self-checking code sequences to overlapping portions of the program, each of said portions containing at least one corrector, wherein each self-checking code sequence is operable to calculate a function of at least one of said portions; and (c) assigning values to the correctors, the value of each corrector being chosen such that the function calculated by self-checking code sequence assigned to a given portion of the program containing a given corrector results in a predefined value when the given portion has not been improperly modified.