Software Self-Defense Systems and Methods
First Claim
1. A method for obfuscating a computer program, the computer program being designed to carry out one or more specified tasks, the method including:
- compiling a source code representation of the computer program to obtain an object code representation of the computer program;
searching the object code representation of the computer program to find first and second object code sequences, the first and second object code sequences being similar, at least in part;
modifying the object code representation of the computer program by;
inserting a third object code sequence into the object code representation of the computer program, the third object code sequence comprising one or more instructions, and being operable to pass control to the first object code sequence;
inserting a branch at the end of the first object code sequence, the branch being operable to;
pass control, upon detection of a first predefined condition, to an instruction following the first object code sequence, and to pass control, upon detection of a second predefined condition, to an instruction following the third object code sequence;
whereby the third object code sequence is executed in place of the second object code sequence without materially affecting completion of the one or more specified tasks.
2 Assignments
0 Petitions
Accused Products
Abstract
Systems and methods are disclosed for protecting a computer program from unauthorized analysis and modification. Obfuscation transformations can be applied to the computer program'"'"'s local structure, control graph, and/or data structure to render the program more difficult to understand and/or modify. Tamper-resistance mechanisms can be incorporated into the computer program to detect attempts to tamper with the program'"'"'s operation. Once an attempt to tamper with the computer program is detected, the computer program reports it to an external agent, ceases normal operation, and/or reverses any modifications made by the attempted tampering. The computer program can also be watermarked to facilitate identification of its owner. The obfuscation, tamper-resistance, and watermarking transformations can be applied to the computer program'"'"'s source code, object code, or executable image.
134 Citations
20 Claims
-
1. A method for obfuscating a computer program, the computer program being designed to carry out one or more specified tasks, the method including:
-
compiling a source code representation of the computer program to obtain an object code representation of the computer program; searching the object code representation of the computer program to find first and second object code sequences, the first and second object code sequences being similar, at least in part; modifying the object code representation of the computer program by; inserting a third object code sequence into the object code representation of the computer program, the third object code sequence comprising one or more instructions, and being operable to pass control to the first object code sequence; inserting a branch at the end of the first object code sequence, the branch being operable to; pass control, upon detection of a first predefined condition, to an instruction following the first object code sequence, and to pass control, upon detection of a second predefined condition, to an instruction following the third object code sequence; whereby the third object code sequence is executed in place of the second object code sequence without materially affecting completion of the one or more specified tasks. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A method for obfuscating a computer program, the computer program being designed to carry out one or more specified tasks, the method including:
-
searching the computer program for first and second code sequences, the first and second code sequences being similar, at least in part; inserting a third code sequence into the computer program, the third code sequence including one or more instructions for overwriting at least a portion of the first code sequence, and for passing control to the first code sequence; inserting a branch at the end of the first code sequence, the branch being operable to; pass control, upon detection of a first predefined condition, to an instruction following the first code sequence, and to pass control, upon detection of a second predefined condition, to an instruction following the third code sequence; whereby the third code sequence is executed in place of the second code sequence without materially affecting completion of the one or more specified tasks. - View Dependent Claims (11, 12, 13)
-
-
14. A method for obfuscating a computer program, the method including:
-
selecting a sequence of programming statements, the sequence of programming statements having a predefined order; incorporating at least a first concurrent process and a second concurrent process into the computer program; incorporating at least a first programming statement from the sequence into the first concurrent process; incorporating at least a second programming statement from the sequence into the second concurrent process; controlling execution of the first concurrent process and the second concurrent process such that the sequence of programming statements is executed in the predefined order. - View Dependent Claims (15, 16, 17, 18, 19, 20)
-
Specification