IP Library Granted Patent US 8,001,595
Granted Patent B1
US 8,001,595 · App. 11/432,648 · Granted Aug 16, 2011

System, method and computer program product for identifying functions in computer code that control a behavior thereof when executed

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,001,595
App. No.
11/432,648
Granted
Aug 16, 2011
Kind
B1
Abstract

A security data structure, method and computer program product are provided. In use, computer code is received. Furthermore, functions in the computer code that control a behavior of the computer code when executed are statically identified.

Claims (30)

1. A method, comprising:

receiving computer code;

statically identifying functions in the computer code that control a behavior of the computer code when executed, utilizing a processor;

calculating a complexity of each identified function;

creating a tree data structure for the computer code, wherein the tree data structure includes the identified functions as nodes;

converting the tree data structure into a vector of the identified functions; and

comparing the vector of the identified functions to a comparison vector of functions.

2. The method of claim 1 , wherein the computer code is binary computer code.

3. The method of claim 1 , wherein the functions are represented by computer code segments within the computer code.

4. The method of claim 1 , wherein the complexity is based on a value of at least one property associated with each identified function.

5. The method of claim 4 , wherein the at least one property includes one of: a data dependent call, a function called by the identified function, a function calling the identified function, a number of application program interfaces utilized by the identified function, a write to memory, a read from memory, and a data dependent jump.

6. The method of claim 1 , wherein the computer code is uncompiled source code.

7. The method of claim 1 , wherein statically identifying functions in the computer code that control a behavior of the computer code when executed further comprises identifying a subset of functions based on the complexity of each identified function.

8. The method of claim 7 , wherein a number of the identified functions included within the subset of functions is based on a predefined threshold.

9. The method of claim 8 , wherein the subset of functions includes a plurality of the identified functions with highest calculated complexities.

10. The method of claim 1 , wherein sequences of functions associated with the vector are compared to sequences of functions associated with the comparison vector.

11. The method of claim 10 , further comprising constructing a function congruency table, wherein the function congruency table maps the identified functions to congruent functions from other comparison computer code.

12. The method of claim 11 , wherein the mapping is based on a percentage of similarities between the identified functions and the functions from the other comparison computer code.

13. The method of claim 12 , wherein the function congruency table includes a percentage of similarities between the identified functions and the functions from the other comparison computer code.

14. The method of claim 13 , further comprising outputting a match percentage for each sequence of functions that is matched to a sequence of functions within the comparison vector, wherein the match percentage is based on the percentage of similarities.

15. The method of claim 1 , wherein the complexity for each identified function is based on a number of instances of at least one property associated with the identified function.

16. The method of claim 1 , wherein the complexity for each identified function is calculated based on a sum of property values associated with the identified function, where as part of the sum, each property value is multiplied by a number of instances of the property associated with the identified function.

17. A computer program product embodied on a non-transitory computer readable medium, comprising:

computer code for receiving computer code;

computer code for identifying functions in the received computer code that control a behavior of the received computer code when executed, utilizing at least one of a function complexity and a tree data structure;

computer code for calculating a complexity of each identified function;

computer code for creating the tree data structure for the received computer code, wherein the tree data structure includes the identified functions as nodes;

computer code for converting the tree data structure into a vector of the identified functions; and

computer code for comparing the vector of the identified functions to a comparison vector of functions.

18. A data structure embodied on a non-transitory computer readable medium for statically identifying functions in computer code that control a behavior of the computer code when executed, calculating a complexity of each identified function, creating a tree data structure for the computer code, wherein the tree data structure includes the identified functions as nodes, converting the tree data structure into a vector of the identified functions, and comparing the vector of the identified functions to a comparison vector of functions.

Assignments (10)
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 10, 2006
From: SPURLOCK, JOEL ROBERT; KAPOOR, ADITYA
To: MCAFEE, INC.
Reel/Frame 017865/0281 →