SYSTEM AND METHOD OF INTERLOCKING TO PROTECT SOFTWARE-MEDIATED PROGRAM AND DEVICE BEHAVIOURS
Methods and devices for thwarting code and control flow based attacks on software. The source code of a subject piece of software is automatically divided into basic blocks of logic. Selected basic blocks are amended so that their outputs are extended. Similarly, other basic blocks are amended such that their inputs are correspondingly extended. The amendments increase or create dependencies between basic blocks such that tampering with one basic block's code causes other basic blocks to malfunction when executed.
1 . A method for thwarting tampering with software, the method comprising the steps of:
(a) receiving source code of said software
(b) dividing said source code into basic blocks of logic, at least one first basic block not being dependent on results from at least one second basic block when said software is run
(c) determining which basic blocks to modify based on a logic flow of said source code
(d) modifying at least one first basic block to result in at least one modified first basic block
(e) modifying at least one second basic block to result in at least one modified second basic block
wherein said at least one modified first basic block is dependent on results from said at least one modified second basic block.
2 . A method for hiding dynamic and static values in computer code, the method comprising the step of:
replacing a value to be hidden with a plurality of computations, said plurality of computation involving other values and constants
said value to be hidden being accessed by executing said plurality of computations.