| US 7,430,670 B1 | ||
| Software self-defense systems and methods | ||
| James J. Horning, Palo Alto, Calif. (US); W. Olin Sibert, Lexington, Mass. (US); Robert E. Tarjan, Princeton, N.J. (US); Umesh Maheshwari, San Jose, Calif. (US); William G. Horne, Lawrenceville, N.J. (US); Andrew K. Wright, Monroe Township, N.J. (US); Lesley R. Matheson, Campbell, Calif. (US); and Susan K. Owicki, Palo Alto, Calif. (US) | ||
| Assigned to Intertrust Technologies Corp., Sunnyvale, Calif. (US) | ||
| Filed on Jul. 31, 2000, as Appl. No. 9/629,546. | ||
| Claims priority of provisional application 60/146419, filed on Jul. 29, 1999. | ||
| Int. Cl. G06F 12/14 (2006.01) | ||
| U.S. Cl. 713—190 [713/194] | 29 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:
obtaining an object code representation of the computer program;
searching the object code representation of the computer program for first and second object code sequences, the first and
second object code sequences being similar, at least in part; and
modifying the object code representation of the computer program without materially affecting completion of the one or more
specified tasks, the modification comprising:
inserting a third object code sequence into the object code representation of the computer program such that the third object
code sequence is executed before the second object code sequence, the third object code sequence comprising one or more instructions,
and being operable to pass control to an instruction that logically begins the first object code sequence;
executing instructions in the first object code sequence in place of instructions in the second 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 that logically followed the first object code
sequence in the unmodified object code representation of the computer program, and to
pass control, upon detection of a second predefined condition, to an instruction that logically followed the second object
code sequence in the unmodified object code representation of the computer program.
|