IP Library › Granted Patent US 8,255,885
Granted Patent B2
US 8,255,885 · App. 12/214,128 · Granted Aug 28, 2012

Detecting copied computer source code by examining computer object code

Assignee: Software Analysis and Forensic Engineering Corp.
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,255,885
App. No.
12/214,128
Granted
Aug 28, 2012
Kind
B2
Abstract

Methods and systems for detecting copied program code are described. The detection may be performed by comparing source code of a first program to object code of a second program. Alternatively, the detection may be performed by comparing object code of a first program to object code of a second program.

Claims (70)

1. A computer-implemented method comprising:

creating one or more first data structures based on a program source code file including a plurality of program elements, each of the first data structures having entries corresponding to program elements of a distinct program element type represented by program strings or program identifiers;

creating a second data structure based on a program object code file using a text converter to convert the program object code to text sequences by solely determining byte by byte whether byte sequences represent characters, the second data structure having entries corresponding to the text sequences from the program object code file;

comparing the entries of the first data structures with the entries of the second data structure to find similar entries;

calculating a correlation score based on the similar entries; and

presenting to a user an indication of copying with respect to the program source code file and the program object code file, wherein the indication of copying is defined by the correlation score.

2. The method of claim 1 wherein creating one or more first data structures based on a program source code file comprises:

creating, based on program language dependent information, a third data structure including a plurality of strings from the program source code file; and

creating, based on the program language dependent information, a fourth data structure including a plurality of identifiers from the program source file.

3. The method of claim 2 wherein comparing the entries of the first data structures with the entries of the second data structure comprises:

comparing entries of the third data structure with the entries of the second data structure, each of the entries of the second data structure being a sequence of contiguous text characters from the program object code file; and

comparing entries of the fourth data structure with the entries of the second data structure.

4. The method of claim 3 wherein calculating a correlation score based on the similar entries comprises:

calculating a number of similar strings based on the comparison between the entries of the third data structure and the entries of the second data structure;

calculating a number of similar identifiers based on the comparison between the entries of the fourth data structure and the entries of the second data structure; and

combining the number of similar strings with the number of similar identifiers to produce the correlation score.

5. The method of claim 4 wherein the number of similar strings and the number of similar identifiers are combined using corresponding weights.

6. The method of claim 1 wherein providing an indication of copying with respect to the program source code file and the program object code file comprises:

presenting a report identifying the program source code file and the program object code file, and the correlation score calculated based on the comparison; and allowing a user to select the correlation score to view the similar entries.

7. The method of claim 1 wherein:

the similar entries represent at least one of exact matches and partial matches.

8. The method of claim 1 wherein:

the comparison is insensitive to whether characters in the data structures are uppercase or lowercase.

9. The method of claim 1 wherein presenting to a user an indication of copying with respect to the program source code file and the program object code file comprises:

displaying a report identifying the program source code file and the program object code file, and the correlation score calculated based on the comparison; and

allowing a user to select the correlation score to view the similar entries.

10. A computer-implemented method comprising:

creating a first data structure based on a first program object code file using a text converter to convert the first program object code to text sequences by solely determining byte by byte whether byte sequences represent characters, the first data structure containing a plurality of entries to store the text sequences from the first program object code, wherein the text sequences from the first program object code corresponds to object code elements;

creating a second data structure based on a second program object code file using the text converter to convert the second program object code to text sequences by solely determining byte by byte whether byte sequences represent characters, the second data structure containing a plurality of entries to store the text sequences from the second program object code, wherein the text sequences from the second program object code corresponds to object code elements;

comparing the entries of the first data structure with the entries of the second data structure to find similar entries;

calculating a correlation score based on the similar entries; and

presenting to a user an indication of copying with respect to the first program object code file and the second program object code file, wherein the indication of copying is defined by the correlation score.

11. The method of claim 10 wherein each entry in the first data structure is a sequence of contiguous text characters from the first program object code file, and each entry in the second data structure is a sequence of contiguous text characters from the second program object code file.

12. The method of claim 10 wherein calculating a correlation score based on the similar entries comprises:

calculating a number of matching non-numeric characters in the similar entries;

calculating a number of matching numerals in the similar entries; and

combining the number of matching non-numeric characters with a fraction of the number of matching numerals to produce the correlation score.

13. The method of claim 12 wherein the fraction of the number of matching numerals varies between 0 and 1 inclusive.

14. The method of claim 10 wherein:

the similar entries represent at least one of exact matches and partial matches.

15. The method of claim 10 wherein:

the comparison is insensitive to whether characters in the data structures are uppercase or lowercase.

16. The method of claim 10 wherein presenting to a user an indication of copying with respect to the first program object code file and the second program object code file comprises:

displaying a report identifying the first program object code file and the second program object code file, and the correlation score calculated based on the comparison; and

allowing a user to select the correlation score to view the similar entries.

17. A non-transitory computer-readable storage medium storing executable instructions to cause a computer system to perform a method comprising:

creating one or more first data structures based on a program source code file including a plurality of program elements, each of the first data structures having entries corresponding to program elements of a distinct program element type represented by program strings or program identifiers;

creating a second data structure based on a program object code file using a text converter to convert the program object code to text sequences by solely determining byte by byte whether byte sequences represent characters, the second data structure having entries corresponding to the text sequences from the program object code file;

comparing the entries of the first data structures with the entries of the second data structure to find similar entries;

calculating a correlation score based on the similar entries; and

providing an indication of copying with respect to the program source code file and the program object code file, wherein the indication of copying is defined by the correlation score.

18. A non-transitory computer-readable storage medium storing executable instructions to cause a computer system to perform a method comprising:

creating a first data structure based on a first program object code file using a text converter to convert the first program object code to text sequences by solely determining byte by byte whether byte sequences represent characters, the first data structure containing a plurality of entries to store the text sequences from the first program object code, wherein the text sequences from the first program object code corresponds to object code elements;

creating a second data structure based on a second program object code file using a text converter to convert the second program object code to text sequences by solely determining byte by byte whether byte sequences represent characters, the second data structure containing a plurality of entries to store the text sequences from the second program object code, wherein the text sequences from the second program object code corresponds to object code elements;

comparing the entries of the first data structure with the entries of the second data structure to find similar entries; and

calculating a correlation score based on the similar entries, the correlation score providing an indication of copying with respect to the first program object code file and the second program object code file.

19. An apparatus comprising:

a memory storing instructions; and

a processor to execute the instructions and cause the apparatus to

create one or more first data structures based on a program source code file including a plurality of program elements, each of the first data structures having entries corresponding to program elements of a distinct program element type represented by program strings or program identifiers;

create a second data structure based on a program object code file using a text converter to convert the program object code to text sequences by solely determining byte by byte whether byte sequences represent characters, the second data structure having entries corresponding to the text sequences from the program object code file;

compare the entries of the first data structures with the entries of the second data structure to find similar entries;

calculate a correlation score based on the similar entries; and

provide an indication of copying with respect to the program source code file and the program object code file, wherein the indication of copying is defined by the correlation score.

20. An apparatus comprising:

a memory storing instructions; and

a processor to execute the instructions and cause the apparatus to

create a first data structure based on a first program object code file using a text converter to convert the first program object code to text sequences by solely determining byte by byte whether byte sequences represent characters, the first data structure containing a plurality of entries to store the text sequences from the first program object code, wherein the text sequences from the first program object code corresponds to object code elements, and to create a second data structure based on a second program object code file using a text converter to convert the second program object code to text sequences by solely determining byte by byte whether byte sequences represent characters, the second data structure containing a plurality of entries to store the text sequences from the second program object code, wherein the text sequences from the second program object code corresponds to object code elements;

compare the entries of the first data structure with the entries of the second data structure to find similar entries; and

calculate a correlation score based on the similar entries, the correlation score providing an indication of copying with respect to the first program object code file and the second program object code file.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 5, 2022
From: SOFTWARE ANALYSIS AND FORENSIC ENGINEERING CORPORATION
To: SAFE IP LLC
Reel/Frame 059830/0069 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 16, 2008
From: ZEIDMAN, ROBERT
To: SOFTWARE ANALYSIS AND FORENSIC ENGINEERING CORP.
Reel/Frame 021169/0117 →
Continuity (1)
Related Publication 20090313271A1 · Dec 17, 2009