Patent ID: 8661559

Claim:
A method of software control flow watermarking comprising the steps of: obtaining a program for protection, the program embodied on a non-transitory computer readable medium; generating at least one watermark value; generating a protected program wherein generating said protected program comprises the steps of: placing the at least one watermark value in at least one CASE statement in execution flow control logic of said program for protection, wherein said CASE statement is not opaque in said control logic and said watermark is visible in said CASE statement rendering the at least one watermark value a visible functional watermark value; and inserting a formula into a control flow decision of the program for protection, said formula having a first formula input variable, said formula capable of producing a duplicate of said visible functional watermark value, said first formula input variable being different from said visible functional watermark value, wherein the formula is in A+B form and is placed in said program for protection, wherein the formula has a first formula input variable and a second formula input variable that are each different from the visible functional watermark value, said first formula input variable and said second formula input variable are each inserted into the program for protection, said first formula input variable comprises insertion of an assignment of A to the formula, and said second formula input value comprises inserting an assignment of B to the formula; and writing the protected program to a non-transitory computer readable medium, wherein the protected program fails to execute properly if said duplicate of said watermark is not attained, wherein removal of the visible functional watermark value placed in the at least one CASE statement perturbs execution of the protected program.