Method and system for tamperproofing software
First Claim
1. Method of protecting host application code comprising a plurality of code blocks using a self-protecting code system, the method comprising:
- preprocessing the host application code using a computer programmed with the self-protecting code system and storing the host application code in a memory accessible by the computer;
obfuscating the host application code using the computer programmed with the self-protecting code system;
installing a guard in the host application code to protect a client block using the computer programmed with the self-protecting code system, the client block being at least one code block;
randomly rearranging the code blocks of the host application code without rearranging the code blocks that have already been protected using the computer programmed with the self-protecting code system;
linking the rearranged host application code with other resources to produce a binary executable image using the computer programmed with the self-protecting code system; and
patching the binary executable image with data values to be used by the guard using the computer programmed with the self-protecting code system and storing the binary executable image after patching the binary executable image;
wherein installing a guard comprises;
mapping parameters in a guard template to variables and values in the host application code to create guard code,installing the guard code in the host application code;
selecting an expression in the host application code to be modified by the guard;
inserting a conditional identity function into the selected expression in the host application code, the conditional identity function including checksum variables and corresponding constant values;
rewriting the selected expression to conceal the checksum variables;
marking the corresponding constant values to be derived from the checksum variables; and
saving a sequence of operations for deriving the corresponding constant values from the checksum variables.
5 Assignments
0 Petitions
Accused Products
Abstract
Method of protecting host application code comprising a plurality of code blocks. The method includes steps of preprocessing the host application code; obfuscating the host application code; installing guards in the host application code to protect client blocks; randomly rearranging the code blocks of the host application code; linking the rearranged host application code with other resources to produce a binary executable image; and patching the binary executable image with data values to be used by the guard. The method can be used to install a plurality of guards to form a distributed network of guards that cooperatively protect the host application code and the other guards in the network. The installation of the guards can be performed automatically using a guard formation graph; and guard formation graph customization parameters. The obfuscation step can include control flow graph merging, cloning, and data-aliasing.
77 Citations
19 Claims
-
1. Method of protecting host application code comprising a plurality of code blocks using a self-protecting code system, the method comprising:
-
preprocessing the host application code using a computer programmed with the self-protecting code system and storing the host application code in a memory accessible by the computer; obfuscating the host application code using the computer programmed with the self-protecting code system; installing a guard in the host application code to protect a client block using the computer programmed with the self-protecting code system, the client block being at least one code block; randomly rearranging the code blocks of the host application code without rearranging the code blocks that have already been protected using the computer programmed with the self-protecting code system; linking the rearranged host application code with other resources to produce a binary executable image using the computer programmed with the self-protecting code system; and patching the binary executable image with data values to be used by the guard using the computer programmed with the self-protecting code system and storing the binary executable image after patching the binary executable image; wherein installing a guard comprises; mapping parameters in a guard template to variables and values in the host application code to create guard code, installing the guard code in the host application code; selecting an expression in the host application code to be modified by the guard; inserting a conditional identity function into the selected expression in the host application code, the conditional identity function including checksum variables and corresponding constant values; rewriting the selected expression to conceal the checksum variables; marking the corresponding constant values to be derived from the checksum variables; and saving a sequence of operations for deriving the corresponding constant values from the checksum variables. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19)
-
Specification