IP Library › Granted Patent US 12,050,668
Granted Patent B1
US 12,050,668 · App. 17/571,404 · Granted Jul 30, 2024

Method and system for obfuscating and protecting game logic and variables during video game compilation

Inventors: Amir Soofi (New York, NY); Claudiu Dumitru (Oakville, CA); Miguel Arroyo (Irvine, CA)
Assignee: TAKE-TWO INTERACTIVE SOFTWARE, INC.
G06F21/14A63F13/71G06F8/425G06F8/443G06F8/54G06F21/1062
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 12,050,668
App. No.
17/571,404
Granted
Jul 30, 2024
Kind
B1
Abstract

A system and method for producing video games in order to prevent cheating in a video game environment by obfuscating game logic and variables during compilation.

Claims (42)

1. A security-based method for compiling an executable from a source file, comprising:

converting the source file into a sequence of tokens via a lexical analyzer;

generating an abstract syntax tree from the sequence of tokens;

producing an intermediate representation of the generated abstract syntax tree;

performing optimizations on the intermediate representation;

transforming the produced intermediate representation into machine code;

creating an executable by linking the machine code with one or more libraries; and

incorporating at least one security measure during the security-based method for compiling the executable, wherein said incorporating comprises injecting a class of reusable security modules, the class including at least two protectors, each protector in operable communication with each other to perform at least one cyclic redundancy check during runtime of the compiled executable.

2. The method of claim 1 , wherein said incorporating the at least one security measure comprises applying protection transforms between said generating the abstract syntax tree and said producing an intermediate representation of the generated abstract syntax tree.

3. The method of claim 2 , wherein said applying protection transforms comprises replacing one or more utility functions provided by a compiler with functionally equivalent custom implementations.

4. The method of claim 1 , wherein said incorporating the at least one security measure comprises applying protection transforms prior to said converting the source file into a sequence of tokens.

5. The method of claim 1 , wherein said incorporating the at least one security measure comprises applying protection transforms between said performing optimizations on the intermediate representation and said transforming the produced intermediate representation into machine code.

6. The method of claim 1 , wherein said incorporating the at least one security measure comprises applying protection transforms during said creating the executable by linking the machine code with one or more libraries.

7. The method of claim 1 , wherein said incorporating the at least one security measure comprises applying protection transforms to the created executable.

8. The method of claim 1 , wherein said transforming the produced intermediate representation into machine code comprises generating, via a custom code generator, a virtualization of the machine code.

9. The method of claim 1 , further comprising:

translating the machine code back into a second intermediate representation;

applying protection transforms to the second intermediate representation; and

compiling the second intermediate representation with the applied protection transforms back into the machine code for said creating the executable.

10. A non-transitory nonvolatile computer program product comprising a processor-readable medium having a sequence of instructions stored thereon, which, when executed by the processor, causes the processor to execute a security-based method for compiling an executable from a source file, the sequence of instructions comprising:

instructions for converting the source file into a sequence of tokens via a lexical analyzer;

instructions for generating an abstract syntax tree from the sequence of tokens;

instructions for producing an intermediate representation of the generated abstract syntax tree;

instructions for performing optimizations on the intermediate representation;

instructions for transforming the produced intermediate representation into machine code;

instructions for creating an executable by linking the machine code with one or more libraries; and

instructions for incorporating at least one security measure during the security-based method for compiling the executable, wherein said instructions for incorporating comprises instructions for injecting a class of reusable security modules, the class including at least two protectors, each protector in operable communication with each other to perform at least one cyclic redundancy check during runtime of the compiled executable.

11. The computer program product of claim 10 , wherein said instructions for incorporating the at least one security measure comprises instructions for applying protection transforms between said instructions for generating the abstract syntax tree and said instructions for producing an intermediate representation of the generated abstract syntax tree.

12. The computer program product of claim 11 , wherein said instructions for applying protection transforms comprises instructions for replacing one or more utility functions provided by a compiler with functionally equivalent custom implementations.

13. The computer program product of claim 10 , wherein said instructions for incorporating the at least one security measure comprises instructions for applying protection transforms prior to said instructions for converting the source file into a sequence of tokens.

14. The computer program product of claim 10 , wherein said instructions for incorporating the at least one security measure comprises instructions for applying protection transforms between said instructions for performing optimizations on the intermediate representation and said instructions for transforming the produced intermediate representation into machine code.

15. The computer program product of claim 10 , wherein said instructions for incorporating the at least one security measure comprises instructions for applying protection transforms during said instructions for creating the executable by linking the machine code with one or more libraries.

16. The computer program product of claim 10 , wherein said instructions for incorporating the at least one security measure comprises instructions for applying protection transforms to the created executable.

17. The computer program product of claim 10 , wherein said instructions for transforming the produced intermediate representation into machine code comprises instructions for generating, via a custom code generator, a virtualization of the machine code.

18. The computer program product of claim 10 , said sequence of instructions further comprising:

instructions for translating the machine code back into a second intermediate representation;

instructions for applying protection transforms to the second intermediate representation; and

instructions for compiling the second intermediate representation with the applied protection transforms back into the machine code for said creating the executable.

19. A distributed system for security-based compiling of an executable from a source file, comprising:

a data network; and

one or more distributed compilers, each distributed compiler in operative communication with the one or more distributed compilers over the data network and comprising a non-transitory nonvolatile computer program product comprising a processor-readable medium having a sequence of instructions stored thereon, which, when executed by the processor, causes the processor to execute the sequence of instructions comprising for receiving an allocated portion of the source file, converting the allocated portion of source file into a sequence of tokens via a lexical analyzer, generating an abstract syntax tree from the sequence of tokens, producing an intermediate representation of the generated abstract syntax tree, performing optimizations on the intermediate representation, transforming the produced intermediate representation into machine code, creating an executable by linking the machine code with one or more libraries, and incorporating at least one security measure during the security-based method for compiling the executable, wherein said incorporating comprises injecting a class of reusable security modules, the class including at least two protectors, each protector in operable communication with each other to perform at least one cyclic redundancy check during runtime of the compiled executable.

20. The distributed system for security-based compiling of claim 1 , wherein at least one of the one or more distributed compilers includes an LLVM compiler toolchain infrastructure.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 9, 2024
From: SOOFI, AMIR; DUMITRU, CLAUDIU; ARROYO, MIGUEL
To: TAKE-TWO INTERACTIVE SOFTWARE, INC.
Reel/Frame 067366/0509 →
Continuity (1)
Provisional Application 63135453 · Jan 8, 2021
Cited By (3)
US 12,461,844 US 12,517,806 US 12,650,856