Interleaved data and instruction streams for application program obfuscation
First Claim
1. A method for executing an obfuscated application program, the method comprising:
- receiving an application program that comprises application program instructions and application program data;
determining an application program instruction location permutation to apply to a current instruction counter value;
determining an application program data location permutation to apply to a current data location counter value;
receiving said current instruction counter value;
applying 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 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 said application program instruction.
2 Assignments
0 Petitions
Accused Products
Abstract
Executing an obfuscated application program comprises receiving an application program comprising application program instructions and application program data, determining an application program instruction location permutation to apply to a current instruction counter value, determining an application program data location permutation to apply to a current data location counter value, receiving the current instruction counter value, and applying the application program instruction location permutation to the current instruction counter value to obtain a reference to an application program instruction in an instruction stream to execute. If the application program instruction references application program data, the application program data location permutation is applied to data referenced by the application program instruction to obtain a reference to data to access. The data to access is interleaved with application program instructions in the instruction stream. The application program instruction is then executed.
109 Citations
52 Claims
-
1. A method for executing an obfuscated application program, the method comprising:
-
receiving an application program that comprises application program instructions and application program data;
determining an application program instruction location permutation to apply to a current instruction counter value;
determining an application program data location permutation to apply to a current data location counter value;
receiving said current instruction counter value;
applying 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 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 said application program instruction. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A method for application program obfuscation, the method comprising:
-
reading a first application program comprising application program instructions and application program data;
determining an application program instruction location permutation that transforms said first application program into an obfuscated application program, said obfuscated application program having at least one application program instruction stored at a memory location that is based at least in part on a permutation of the memory location where the corresponding application program instruction is stored in said first application program;
determining a first instruction location of said first application program;
determining an application program data location permutation that transforms said first application program into an obfuscated application program, said obfuscated application program having at least one application program datum stored at a memory location that is based at least in part on a permutation of the memory location where the corresponding application program datum is stored in said first application program;
determining a first data location of said first application program;
applying said application program instruction location permutation and said application program data location permutation to said first application program to create an obfuscated application program comprising an instruction stream having application program data interspersed with application program instructions; and
sending said obfuscated application program. - View Dependent Claims (8, 9, 10, 11, 12, 13)
-
-
14. A program storage device readable by a machine, embodying a program of instructions executable by the machine to perform a method for executing an obfuscated application program, the method comprising:
-
receiving an application program that comprises application program instructions and application program data;
determining an application program instruction location permutation to apply to a current instruction counter value;
determining an application program data location permutation to apply to a current data location counter value;
receiving said current instruction counter value;
applying 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 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 said application program instruction. - View Dependent Claims (15, 16, 17, 18, 19, 25, 26)
-
-
20. A program storage device readable by a machine, embodying a program of instructions executable by the machine to perform a method for application program obfuscation, the method comprising:
-
reading a first application program comprising application program instructions and application program data;
determining an application program instruction location permutation that transforms said first application program into an obfuscated application program, said obfuscated application program having at least one application program instruction stored at a memory location that is based at least in part on a permutation of the memory location where the corresponding application program instruction is stored in said first application program;
determining a first instruction location of said first application program;
determining an application program data location permutation that transforms said first application program into an obfuscated application program, said obfuscated application program having at least one application program datum stored at a memory location that is based at least in part on a permutation of the memory location where the corresponding application program datum is stored in said first application program;
determining a first data location of said first application program;
applying said application program instruction location permutation and said application program data location permutation to said first application program to create an obfuscated application program comprising an instruction stream having application program data interspersed with application program instructions; and
sending said obfuscated application program. - View Dependent Claims (21, 22, 23, 24)
-
-
27. An apparatus for executing an obfuscated application program, the apparatus comprising:
-
means for receiving an application program that comprises application program instructions and application program data;
means for determining an application program instruction location permutation to apply to a current instruction counter value;
means for determining an application program data location permutation to apply to a current data location counter value;
means for receiving said current instruction counter value;
means for applying 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;
means for if said application program instruction references application program data, applying 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
means for executing said application program instruction. - View Dependent Claims (28, 29, 30, 31, 32)
-
-
33. An apparatus for application program obfuscation, the apparatus comprising:
-
means for reading a first application program comprising application program instructions and application program data;
means for determining an application program instruction location permutation that transforms said first application program into an obfuscated application program, said obfuscated application program having at least one application program instruction stored at a memory location that is based at least in part on a permutation of the memory location where the corresponding application program instruction is stored in said first application program;
means for determining a first instruction location of said first application program;
means for determining an application program data location permutation that transforms said first application program into an obfuscated application program, said obfuscated application program having at least one application program datum stored at a memory location that is based at least in part on a permutation of the memory location where the corresponding application program datum is stored in said first application program;
means for determining a first data location of said first application program;
means for applying said application program instruction location permutation and said application program data location permutation to said first application program to create an obfuscated application program comprising an instruction stream having application program data interspersed with application program instructions; and
means for sending said obfuscated application program. - View Dependent Claims (34, 35, 36, 37, 38, 39)
-
-
40. An apparatus for executing an obfuscated application program, the apparatus comprising a user device configured to:
-
receive an application program that comprises application program instructions and application program data;
determine an application program instruction location permutation to apply to a current instruction counter value;
determine an application program data location permutation to apply to a current data location counter value;
receive said current instruction counter value;
apply 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;
apply 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
execute said application program instruction. - View Dependent Claims (41, 42, 43, 44, 45)
-
-
46. An apparatus for application program obfuscation, the apparatus comprising an application program provider configured to:
-
read a first application program comprising application program instructions and application program data;
determine an application program instruction location permutation that transforms said first application program into an obfuscated application program, said obfuscated application program having at least one application program instruction stored at a memory location that is based at least in part on a permutation of the memory location where the corresponding application program instruction is stored in said first application program;
determine a first instruction location of said first application program;
determine an application program data location permutation that transforms said first application program into an obfuscated application program, said obfuscated application program having at least one application program datum stored at a memory location that is based at least in part on a permutation of the memory location where the corresponding application program datum is stored in said first application program;
determine a first data location of said first application program;
if said application program instruction references application program data, apply said application program instruction location permutation and said application program data location permutation to said first application program to create an obfuscated application program comprising an instruction stream having application program data interspersed with application program instructions; and
send said obfuscated application program. - View Dependent Claims (47, 48, 49, 50, 51, 52)
-
Specification