IP Library Granted Patent US 7,603,552
Granted Patent B1
US 7,603,552 · App. 11/122,872 · Granted Oct 13, 2009

Piracy prevention using unique module translation

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 7,603,552
App. No.
11/122,872
Granted
Oct 13, 2009
Kind
B1
Abstract

A method for providing solidified software in a computing environment includes creating a new reference for a function in a function table; copying an address of the function and associating the address with the new reference; replacing the address associated with an old reference of the function with a dummy address; and substituting each old reference in normal code with the new reference, where injected code is not able to execute in the computing environment. The function table entries can be further randomized by reordering the entries, introducing intermediate mappings, or providing non-operative entries. Alternatively, all or part of the code of the function can be copied and moved to a different storage location and associated with the new reference. The copied code can be further randomized by the insertion of dummy code, utilizing reverse peephole techniques, varying the size of the copied portion, or interleaving non-operative code.

Claims (65)

1. A method for providing solidified software in a computing environment, comprising:

(a) creating a new reference for at least one function in a function table;

(b) copying an address of the at least one function and associating the address with the new reference;

(c) replacing the address associated with an old reference of the at least one function with a dummy address; and

(d) substituting each old reference in normal code with the new reference, wherein injected code is not able to execute in the computing environment.

2. The method of claim 1 , wherein the normal code comprises a set of instructions for execution on a computer that has been determined to have authorization to be install and execute in the computing environment.

3. The method of claim 1 , wherein the injected code comprises a set of instructions attempting to access the computing environment that has not been determined to have authorization to be installed or be executed in the computing environment.

4. The method of claim 1 , further comprising:

(e) randomizing entries for a plurality of functions with new references in the function table.

5. The method of claim 4 , wherein the randomizing (e) comprises:

(e1) reordering the entries.

6. The method of claim 4 , wherein the randomizing (e) comprises:

(e1) providing an intermediate mapping for the entries.

7. The method of claim 4 , wherein the randomizing (e) comprises:

(e1) providing non-operating entries into the function table.

8. The method of claim 1 , wherein the reference comprises one or more of the group consisting of:

a name;

a number;

an address; and

a place in a data structure.

9. A method for providing solidified software in a computing environment, comprising:

(a) creating a new reference for at least one function in a function table, wherein code for the at least one function is at a first storage location;

(b) copying the code and placing the code in a second storage location and associating an address of the copied code with the new reference;

(c) replacing the code at the first storage location with dummy code; and

(d) substituting each reference of the at least one function in normal code with the new reference, wherein injected code is not able to execute in the computing environment.

10. The method of claim 9 , wherein the normal code comprises a set of instructions for execution on a computer that has been determined to have authorization to be install and execute in the computing environment.

11. The method of claim 9 , wherein the injected code comprises a set of instructions attempting to access the computing environment that has not been determined to have authorization to be installed or be executed in the computing environment.

12. The method of claim 9 , further comprising:

(e) randomizing the copied code, such that a pattern of the randomized code does not match a pattern of the copied code, wherein the randomized code is semantically invariant from the copied code.

13. The method of claim 12 , wherein the randomizing (e) comprises:

(e1) inserting dummy code.

14. The method of claim 12 , wherein the randomizing (e) comprises:

(e1) utilizing a reverse peephole technique.

15. The method of claim 12 , wherein the randomizing (e) comprises:

(e1) interleaving non-operative instructions into the copied code.

16. The method of claim 12 , wherein the randomizing (e) comprises:

(e1) varying a size of the copied code.

17. The method of claim 9 , wherein the reference comprises one or more of the group consisting of:

a name;

a number;

an address; and

a place in a data structure.

18. A method for providing solidified software in a computing environment, comprising:

(a) creating a new reference for at least one function in a function table, wherein code for the at least one function is at a first storage location;

(b) copying a first portion of the code for the at least one function and placing the copied code at a second storage location;

(c) associating an address of the copied code with the new reference, wherein an end of the copied code references an address of a second portion of the code for the at least one function at the first storage location;

(d) replacing the first portion of the code at the first storage location with dummy code; and

(e) substituting each reference of the function in normal code with the new reference, wherein injected code is not able to execute in the computing environment.

19. The method of claim 18 , wherein the normal code comprises a set of instructions for execution on a computer that has been determined to have authorization to be install and execute in the computing environment.

20. The method of claim 18 , wherein the injected code comprises a set of instructions attempting to access the computing environment that has not been determined to have authorization to be installed or be executed in the computing environment.

21. The method of claim 18 , further comprising:

(e) randomizing the copied code, such that a pattern of the randomized code does not match a pattern of the copied code, wherein the randomized code is semantically invariant from the copied code.

22. The method of claim 21 , wherein the randomizing (e) comprises:

(e1) inserting dummy code.

23. The method of claim 21 , wherein the randomizing (e) comprises:

(e1) utilizing a reverse peephole technique.

24. The method of claim 21 , wherein the randomizing (e) comprises:

(e1) interleaving non-operative instructions into the copied code.

25. The method of claim 21 , wherein the randomizing (e) comprises:

(e1) varying a size of the copied code.

26. The method of claim 18 , wherein the reference comprises one or more of the group consisting of:

a name;

a number;

an address; and

a place in a data structure.

Assignments (11)
CORRECTIVE ASSIGNMENT TO CORRECT THE THE PATENT TITLES AND REMOVE DUPLICATES IN THE SCHEDULE PREVIOUSLY RECORDED AT REEL: 059354 FRAME: 0335. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jun 23, 2022
From: MCAFEE, LLC
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 060792/0307 →
SECURITY INTEREST Recorded Mar 3, 2022
From: MCAFEE, LLC
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT AND COLLATERAL AGENT
Reel/Frame 059354/0335 →
RELEASE OF INTELLECTUAL PROPERTY COLLATERAL - REEL/FRAME 045056/0676 Recorded Mar 2, 2022
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: MCAFEE, LLC
Reel/Frame 059354/0213 →
RELEASE OF INTELLECTUAL PROPERTY COLLATERAL - REEL/FRAME 045055/0786 Recorded Oct 26, 2020
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: MCAFEE, LLC
Reel/Frame 054238/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE PATENT 6336186 PREVIOUSLY RECORDED ON REEL 045056 FRAME 0676. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY INTEREST. Recorded Oct 22, 2020
From: MCAFEE, LLC
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 054206/0593 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE PATENT 6336186 PREVIOUSLY RECORDED ON REEL 045055 FRAME 786. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY INTEREST. Recorded Oct 22, 2020
From: MCAFEE, LLC
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 055854/0047 →
SECURITY INTEREST Recorded Jan 12, 2018
From: MCAFEE, LLC
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 045056/0676 →
SECURITY INTEREST Recorded Jan 12, 2018
From: MCAFEE, LLC
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 045055/0786 →
CHANGE OF NAME AND ENTITY CONVERSION Recorded Aug 24, 2017
From: MCAFEE, INC.
To: MCAFEE, LLC
Reel/Frame 043665/0918 →
MERGER Recorded Jul 20, 2009
From: SOLIDCORE SYSTEMS, INC.
To: MCAFEE, INC.
Reel/Frame 022973/0458 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 4, 2005
From: SEBES, E. JOHN; BHARGAVA, RISHI; NAIK, DILIP
To: SOLIDCORE SYSTEMS, INC.
Reel/Frame 016540/0940 →