Patent ID: 8161463

Claim:
An automated method for rendering a software program resistant to reverse engineering analysis, whereby existing methods are based on substituting, modifying, or encoding computational expressions or statements, in any one of the following application: the computational expressions or statements themselves to be protected, the computational expressions or statements being used to render control flow obscure or tamper-resistant, the computational expressions or statements being used to render data addressing obscure or tamper-resistant, the computational expressions or statements being used to render accesses to large bodies of data obscure or tamper-resistant, or the computational expressions or statements being used for some combination computation protection, control-flow protection, data-addressing-protection, or protection of accesses to large bodies of data, the method comprising: replacing at least one first constant or first expression in such a computational expression or statement, whether said computational expression or statement is in source code or binary code form, of said software program, with a second expression, said first expression being a mathematical expression, a Boolean expression, or a bitwise-Boolean expression, said second expression being a mixed mathematical and bitwise-Boolean expression, said first constant or said first expression being simpler than said second expression and said second expression being based on the value or the variables found in said first constant or said first expression, wherein evaluation of said second mixed mathematical and bitwise-Boolean expression produces a value which preserves the value of said first constant or said first expression, either: with the original value of said first constant or the original value of the result of said first expression, in which case said second mixed mathematical and bitwise-Boolean expression is obtained from said first constant or said first expression by converting said first constant or said first expression by mathematical identities, or, in an encoded form, that is, as a new value, which can be converted back to the original said value of said first constant or said first expression by applying an information-preserving decoding function, in which case said second expression is obtained from said first constant or said first expression by modifying said first constant or said first expression by a combination of conversion according to mathematical identities and transformation according to an information preserving encoding function corresponding to the information preserving decoding function, wherein conversion of said original constant or expression is performed according to a mathematical identity of the form ∑ i = 1 k ⁢ a i ⁢ e i = E where a i are coefficients, e i are bitwise expressions, whether simple or complex, and E is said original constant or expression.