Patent ID: 7424620

Claim:
A method for executing an obfuscated application program, the method comprising: receiving, on a user device, an obfuscated application program that comprises application program instructions and application program data; determining, in said user device during said execution of said obfuscated application, an application program instruction location permutation to apply to a current instruction counter value; determining, in said user device during said execution of said obfuscated application, an application program data location permutation to apply to a current data location counter value; receiving, in said user device during said execution of said obfuscated application, said current instruction counter value; applying, in said user device during said execution of said obfuscated application, said application program instruction location permutation to said current instruction counter value to obtain a first reference to an application program instruction, in an instruction stream, to execute; if said application program instruction references application program data, applying, in said user device during said execution of said obfuscated application, said application program data location permutation to data referenced by said application program instruction to obtain a second reference to data to access, said data to access interleaved with application program instructions in said instruction stream; and executing, in said user device during said execution of said obfuscated application, said application program instruction.