Patent ID: 8752032

Claim:
A method for thwarting tampering with software, the method comprising a processor executing: a) receiving source code of said software; b) converting said source code into an intermediate form defining basic blocks and dominating relationships among said basic blocks, wherein said intermediate form is represented as a control flow graph; c) selecting a computation of at least one first basic block and a computation of at least one second basic block, where said at least one second basic block is dominated by said at least one first basic block; d) encoding said computation of said at least one first basic block and said computation of said at least one second basic block using data encodings with an obfuscated function; e) setting coefficients of said data encodings in said at least one second basic block to be dependent on outputs from said at least one first basic block, wherein tampering with said at least one first basic block causes computations in the at least one second basic block to malfunction due to incorrect data encodings; and (f) randomly selecting from automatically generated mixed- Boolean-arithmetic (MBA) identities and performing substitutions according to the selected MBA identities in said data encodings in said at least one first basic block and said at least one second basic block, wherein said MBA identities are generated by means of a generator based on at least one of converting bitwise expressions to linear MBA identities and deriving MBA identities from linearly-dependent truth tables.