Interleaved data and instruction streams for application program obfuscation
First Claim
1. 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.
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.
118 Citations
52 Claims
-
1. 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. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A method for application program obfuscation, the method comprising:
-
reading, at an application program provider, a first application program comprising application program instructions and application program data wherein execution of said first application program itself provides a service; determining, at said application program provider, an application program instruction location permutation; determining, at said application program provider, a memory storage location for at least one application program instruction of said first application program; transforming, at said application program provider, said memory storage location using said application program instruction location permutation to generate an 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 storage location of said at least one application program instruction in said first application program; determining, at said application program provider, an application program data location permutation; determining, at said application program provider, a memory storage location for at least one datum of said first application program; transforming, at said application program provider, said storage memory location of said at least one datum using said application program data location permutation to generate in said obfuscated application program, at least one application program datum stored at a memory location that is based at least in part on a permutation of the memory storage location of said at least one datum in said first application program, wherein said transforming using said application program instruction location permutation and said transforming using said application program data location permutation creates an instruction stream for said obfuscated application program having application program data interspersed with application program instructions; and sending, at said application program provider, said obfuscated application program. - View Dependent Claims (8, 9, 10, 11, 12, 13)
-
-
14. A program storage device comprising a computer readable medium having embodied therein computer readable instructions, wherein execution of said computer readable instructions results in 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. - View Dependent Claims (15, 16, 17, 18, 19)
-
-
20. A program storage device comprising a computer readable medium having embodied therein computer readable instructions, wherein execution of said computer readable instructions results in a method for application program obfuscation, the method comprising:
-
reading, at an application program provider, a first application program comprising application program instructions and application program data wherein execution of said first application program itself provides a service; determining, at said application program provider, an application program instruction location permutation; determining, at said application program provider, a memory storage location for at least one application program instruction of said first application program; transforming, at said application program provider, said memory storage location using said application program instruction location permutation to generate an 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 storage location of said at least one application program instruction in said first application program; determining, at said application program provider, an application program data location permutation; determining, at said application program provider, a memory storage location for at least one datum of said first application program; transforming, at said application program provider, said storage memory location of said at least one datum using said application program data location permutation to generate in said obfuscated application program, at least one application program datum stored at a memory location that is based at least in part on a permutation of the memory storage location of said at least one datum in said first application program, wherein said transforming using said application program instruction location permutation and said transforming using said application program data location permutation creates an instruction stream for said obfuscated application program having application program data interspersed with application program instructions; and sending, at said application program provider, said obfuscated application program. - View Dependent Claims (21, 22, 23, 24, 25, 26)
-
-
27. An apparatus for executing an obfuscated application program, the apparatus comprising:
-
means for receiving, on a user device, an obfuscated application program that comprises application program instructions and application program data; means for 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; means for 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; means for receiving, in said user device during said execution of said obfuscated application, said current instruction counter value; means for 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; means for, 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 means for executing, in said user device during said execution of said obfuscated application, 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, at an application program provider, a first application program comprising application program instructions and application program data wherein execution of said first application program itself provides a service; means for determining, at said application program provider, an application program instruction location permutation; means for determining, at said application program provider, a memory storage location for at least one application program instruction of said first application program; means for transforming, at said application program provider, said memory storage location using said application program instruction location permutation to generate an 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 storage location of said at least one application program instruction in said first application program; means for determining, at said application program provider, an application program data location permutation; means for determining,, at said application program provider, a memory storage location for at least one datum of said first application program; means for transforming, at said application program provider, said storage memory location of said at least one datum using said application program data location permutation to generate in said obfuscated application program, at least one application program datum stored at a memory location that is based at least in part on a permutation of the memory storage location of said at least one datum in said first application program, wherein said means for transforming using said application program instruction location permutation and said means for transforming using said application program data location permutation creates an instruction stream for said obfuscated application program having application program data interspersed with application program instructions; and means for sending, at said application program provider, 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, on said user device, an obfuscated application program that comprises application program instructions and application program data; determine, 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; determine, 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; receive, in said user device during said execution of said obfuscated application, said current instruction counter value; apply, 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; apply, 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 execute, in said user device during said execution of said obfuscated application, 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, at said application program provider, a first application program comprising application program instructions and application program data wherein execution of said first application program itself provides a service; determine, at said application program provider, an application program instruction location permutation; determine, at said application program provider, a memory storage location for at least one application program instruction of said first application program; transform, at said application program provider, said memory storage location using said application program instruction location permutation to generate an 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 storage location of said at least one application program instruction in said first application program; determine, at said application program provider, an application program data location permutation; determine, at said application program provider, a memory storage location for at least one datum of said first application program; transform, at said application program provider, said storage memory location of said at least one datum using said application program data location permutation to generate in said obfuscated application program, at least one application program datum stored at a memory location that is based at least in part on a permutation of the memory storage location of said at least one datum in said first application program, wherein said transforming using said application program instruction location permutation and said transforming using said application program data location permutation creates an instruction stream for said obfuscated application program having application program data interspersed with application program instructions; and send, at said application program provider, said obfuscated application program. - View Dependent Claims (47, 48, 49, 50, 51, 52)
-
Specification