Non-linear execution of application program instructions for application program obfuscation
First Claim
1. A method for executing an obfuscated application program, the method comprising:
- receiving an application program comprising application program data and application program instructions;
determining an application program instruction location permutation to apply to a current instruction counter value;
receiving said current instruction counter value;
applying said application program instruction location permutation to said current instruction counter value to obtain a reference to an application program instruction to execute; and
executing said application program instruction to execute.
2 Assignments
0 Petitions
Accused Products
Abstract
Obfuscating an application program comprises reading a first application program, determining an application program instruction location permutation that transforms the first application program into 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 location where the corresponding application program instruction is stored in the first application program, applying the application program instruction location permutation to the first application program to create an obfuscated application program, and sending the obfuscated application program. Executing an obfuscated application program comprises receiving an application program, determining an application program instruction location permutation to apply to a current instruction counter value, receiving, applying the application program instruction location permutation to the current instruction counter value to obtain a reference to an application program instruction to execute, and executing the application program instruction to execute.
-
Citations
77 Claims
-
1. A method for executing an obfuscated application program, the method comprising:
-
receiving an application program comprising application program data and application program instructions;
determining an application program instruction location permutation to apply to a current instruction counter value;
receiving said current instruction counter value;
applying said application program instruction location permutation to said current instruction counter value to obtain a reference to an application program instruction to execute; and
executing said application program instruction to execute. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
-
-
16. A method for application program obfuscation, the method comprising:
-
reading a first application program comprising application program data and application program instructions;
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;
applying said application program instruction location permutation to said first application program to create an obfuscated application program; and
sending said obfuscated application program. - View Dependent Claims (17, 18, 19)
-
-
20. 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 comprising application program data and application program instructions;
determining an application program instruction location permutation to apply to a current instruction counter value;
receiving said current instruction counter value;
applying said application program instruction location permutation to said current instruction counter value to obtain a reference to an application program instruction to execute; and
executing said application program instruction to execute. - View Dependent Claims (21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34)
-
-
35. 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 data and application program instructions;
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;
applying said application program instruction location permutation to said first application program to create an obfuscated application program; and
sending said obfuscated application program. - View Dependent Claims (36, 37, 38)
-
-
39. An apparatus for executing an obfuscated application program, the apparatus comprising:
-
means for receiving an application program comprising application program data and application program instructions;
means for determining an application program instruction location permutation to apply to a current instruction 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 reference to an application program instruction to execute; and
means for executing said application program instruction to execute. - View Dependent Claims (40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53)
-
-
54. An apparatus for application program obfuscation, the apparatus comprising:
-
means for reading a first application program comprising application program data and application program instructions;
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 applying said application program instruction location permutation to said first application program to create an obfuscated application program; and
means for sending said obfuscated application program. - View Dependent Claims (55, 56, 57)
-
-
58. An apparatus for executing an obfuscated application program, the apparatus comprising a user device configured to:
-
receive an application program comprising application program data and application program instructions;
determine an application program instruction location permutation to apply to a current instruction counter value;
receive said current instruction counter value;
apply said application program instruction location permutation to said current instruction counter value to obtain a reference to an application program instruction to execute; and
execute said application program instruction to execute. - View Dependent Claims (59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72)
-
-
73. An apparatus for application program obfuscation, the apparatus comprising an application program provider configured to:
-
read a first application program comprising application program data and application program instructions;
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;
apply said application program instruction location permutation to said first application program to create an obfuscated application program; and
send said obfuscated application program. - View Dependent Claims (74, 75, 76)
-
-
77. A memory for storing data for access by an application program being executed on a data processing system, comprising:
a data structure stored in said memory, said data structure including information used by said application program to determine a next application program instruction to execute, said data structure comprising one or more entries comprising a first value and a modifier value, said modifier value determining how said first value is modified, said first value matching a first one or more bits of a current application program instruction counter value.
Specification