Software obfuscation method using an opaque predicate based on multiplying mixed Boolean-arithmetic expressions
AssigneeThales Dis Cpl USA, Inc.
InventorsRoman Rohleder, Peter Garba
Life of this patent
Estimating the term…
Abstract
Provided is a program and computer-implemented method of obfuscating a software code, comprising adding a conditional branch instruction to the software code which, when executed, causes evaluating an opaque predicate (PT, PF, P?). The method comprises a step of generating the opaque predicate which includes performing a multiplication operation having as operands two mixed Boolean-arithmetic expressions. Other embodiments disclosed.
Claims8
A computer-implemented method, performed by a data processing system comprising a processor, of obfuscating a software code for protecting execution of the software code against automatic de-obfuscation by symbolic execution, comprising adding, by the processor, a conditional branch instruction to the software code which, during execution of the software code, causes evaluating an opaque predicate (PT, PF, P?), comprising generating, by the processor, the opaque predicate (PT, PF, P?) which includes performing a multiplication operation having as operands two mixed Boolean-arithmetic expressions to alter an execution flow of the software code, wherein the conditional branch instruction causes, during execution of the software code, evaluating the opaque predicate (PT, PF, P?) by checking equality or inequality of a first term and a second term and execution branching on one of a true branch and a false branch depending on whether the equality or inequality is respectively checked as true or false, wherein generating the opaque predicate (PT, PF, P?) comprises generating the first term and the second term, wherein generating the first term includes performing a first multiplication operation having as operands a first expression (MBA1_A) of a first mixed Boolean-arithmetic equality of two expressions and a first expression (MBA2_A) of a second mixed Boolean-arithmetic equality of two expressions, and wherein generating the second term includes performing a second multiplication operation having as operands a second expression (MBA1_B) of the first mixed Boolean-arithmetic equality of two expressions and a second expression (MBA2_B) of the second mixed Boolean-arithmetic equality of two expressions.
An obfuscated computer program comprising a conditional branch instruction added in software code stored in a non-transitory computer-readable medium to obfuscate the software code for protecting execution of the software code against automatic de-obfuscation by symbolic execution, which, during execution of the software code by a processor, causes evaluating an opaque predicate (PT, PF, P?), comprising generating, by the processor, the opaque predicate (PT, PF, P?) which includes performing a multiplication operation having as operands two mixed Boolean-arithmetic expressions to alter an execution flow of the software code, wherein the conditional branch instruction causes, during execution of the software code, evaluating the opaque predicate (PT, PF, P?) by checking equality or inequality of a first term and a second term and execution branching on one of a true branch and a false branch depending on whether the equality or inequality is respectively checked as true or false, wherein the first term is based on multiplying a first expression (MBA1_A) of a first mixed Boolean-arithmetic equality of two expressions with a first expression (MBA2_A) of a second mixed Boolean-arithmetic equality of two expressions, and wherein the second term is based on multiplying a second expression (MBA1_B) of the first mixed Boolean-arithmetic equality of two expressions with a second expression (MBA2_B) of the second mixed Boolean-arithmetic equality of two expressions.
Dependencies are inferred from the claim text.