IP Library Granted Patent US 8,539,459
Granted Patent B2
US 8,539,459 · App. 10/567,948 · Granted Sep 17, 2013

Code obfuscation and controlling a processor by emulation

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,539,459
App. No.
10/567,948
Granted
Sep 17, 2013
Kind
B2
Abstract

An individual security program is randomly chosen by way of a respective key and is then packaged with a games program to provide an executable program file which is applied to a storage media, such as an optical disc. Whenever the security program is running, the object code it produces is obfuscated to make it difficult to overcome the protection by identifying and removing the security program. The obfuscated object code is produced by substituting a variable in source code with a function of the variable. When the source code is compiled to produce the object code, the function causes the variable to be presented in the compiled object code as a series of operations.

Claims (29)

1. A computer-implemented method of producing obfuscated object code, the method comprising:

substituting a variable in source code with a class template defining a plurality of functions of the variable, each of the plurality of functions indexed by a key value and associated with a series of operations resulting in an assignment of the variable in a manner obfuscating said assignment, wherein the series of operations reliably returns the variable to an assigned value, wherein a different key value is associated with each one of the plurality of functions defined in the class template, and wherein the method further comprises selecting a key value, which is associated with one of said plurality of functions; and

compiling the source code by using a compiler to produce object code, wherein the compiler inserts in the object code the series of operations associated with one of the plurality of functions of the variable identified by the selected key value.

2. The method according to claim 1 , wherein the series of operations comprises a plurality of operations from a group of operations including arithmetic operations and logical operations.

3. The method according to claim 1 , wherein the source code is written in the C++ programming language.

4. A computer-implemented method of producing storage media having a secured executable program thereon, the method comprising:

obfuscating object code of a security program by substituting a variable in source code of the security program with a class template defining a plurality of functions of the variable, each of the plurality of functions indexed by a key value and associated with a series of operations resulting in an assignment of the variable in a manner obfuscating said assignment, wherein a different key value is associated with each one of the plurality of functions defined in the class template, and wherein the method further comprises selecting a key value, which is associated with one of said plurality of functions, and compiling the source code by using a compiler to produce the object code, wherein the compiler inserts in the object code the series of operations associated with one of the plurality of functions of the variable identified by the selected key value, and wherein the series of operations reliably returns the variable to an assigned value;

securing an executable program by associating the executable program with the security program which is arranged to control access to the executable program; and applying the secured executable program to a storage media.

5. The method according to claim 4 , wherein the executable program and the security program are associated at object code level, the security program being arranged to encrypt the executable program.

6. The method according to claim 4 , further comprising moving blocks of the executable program out of the executable program and relocating the blocks in the security program.

7. The method according to claim 4 , wherein the security program is arranged to require the running of an authentication program.

8. The method according to claim 4 , wherein the source code of the security program involves stored arrays and templates and utilizes pointers to navigate the arrays and templates.

9. The method according to claim 4 , wherein the source code of the security program is written in the C++ programming language.

10. The method according to claim 4 , wherein the storage media onto which the secured executable program is applied is an optical disc.

11. The method according to claim 10 , wherein the secured executable program is applied to the optical disc by laser beam encoding.

12. The method according to claim 4 , wherein the storage media onto which the secured executable program is applied is a memory unit associated with at least one computer.

13. A non-transitory storage media having an executable program and a security program thereon, wherein the security program controls access to the executable program, the security program is in object code, and the object code of the security program has been obfuscated by substituting a variable in source code of the security program with a class template defining a plurality of functions of the variable, each of the plurality of functions indexed by a key value and associated with a series of operations resulting in an assignment of the variable in a manner obfuscating said assignment, wherein a different key value is associated with each one of the plurality of functions defined in the class template, and wherein the method further comprises selecting a key value, which is associated with one of said plurality of functions, and compiling the source code by using a compiler to produce the object code, wherein the compiler inserted in the object code the series of operations associated with one of the plurality of functions of the variable identified by the selected key value, and wherein the series of operations reliably returns the variable to an assigned value.

14. The storage media according to claim 13 , wherein the series of operations comprises a plurality of operations from a group of operations including arithmetic operations and logical operations.

15. The storage media according to claim 13 , wherein the executable program and the security program are associated at object code level, and wherein the executable program is encrypted on the storage media and the associated security program enables decryption of the executable program.

16. The storage media according to claim 13 , wherein blocks from the executable program have been relocated within the security program.

17. The storage media according to claim 13 , wherein the security program is arranged to require the running of an authentication program.

18. The storage media according to claim 13 , wherein the storage media is an optical disc on which the executable program and the security program are encoded.

19. The storage media according to claim 18 , wherein the optical disc is one of: a CD, a CD-ROM, and a DVD.

20. The storage media according to claim 13 , wherein the storage media is a memory unit associated with at least one computer.

21. The storage media according to claim 13 , wherein the executable program is one or more of:

a games program;

a video program;

an audio program; and

other software.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 27, 2011
From: ROVI SOLUTIONS LIMITED
To: ROVI EUROPE LIMITED
Reel/Frame 025868/0525 →
RELEASE OF SECURITY INTEREST Recorded Oct 29, 2010
From: JPMORGAN CHASE BANK, N.A. (A NATIONAL ASSOCIATION)
To: ALL MEDIA GUIDE, LLC; APTIV DIGITAL, INC.; GEMSTAR DEVELOPMENT CORPORATION; INDEX SYSTEMS INC.; ODS PROPERTIES, INC.; ROVI DATA SOLUTIONS, INC. (FORMERLY KNOWN AS TV GUIDE DATA SOLUTIONS, INC.); ROVI GUIDES, INC. (FORMERLY KNOWN AS GEMSTAR-TV GUIDE INTERNATIONAL, INC.); ROVI SOLUTIONS CORPORATION (FORMERLY KNOWN AS MACROVISION CORPORATION); ROVI SOLUTIONS LIMITED (FORMERLY KNOWN AS MACROVISION EUROPE LIMITED); ROVI TECHNOLOGIES CORPORATION; STARSIGHT TELECAST, INC.; TV GUIDE, INC.; TV GUIDE ONLINE, LLC; UNITED VIDEO PROPERTIES, INC.
Reel/Frame 025222/0731 →
CHANGE OF NAME Recorded May 15, 2010
From: MACROVISION EUROPE LIMITED
To: ROVI SOLUTIONS LIMITED
Reel/Frame 024380/0965 →
SECURITY AGREEMENT Recorded May 15, 2008
From: APTIV DIGITAL, INC.; GEMSTAR DEVELOPMENT CORPORATION; GEMSTAR-TV GUIDE INTERNATIONAL, INC.; INDEX SYSTEMS INC; MACROVISION CORPORATION; ODS PROPERTIES, INC.; STARSIGHT TELECAST, INC.; TV GUIDE ONLINE, LLC; UNITED VIDEO PROPERTIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 020986/0074 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 10, 2006
From: STIEMENS, ALAN WALTER; GRAY, MARTIN CLIVE; SULLEY, CHRISTOPHER EDWARD
To: MACROVISION EUROPE LIMITED
Reel/Frame 017570/0189 →