IP Library Granted Patent US 9,223,554
Granted Patent B1
US 9,223,554 · App. 13/840,647 · Granted Dec 29, 2015

Recovering source code structure from program binaries

Inventor: Nathaniel J. Lawson (Oakland, CA)
Assignee: SourceDNA, Inc.
G06F8/54
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 9,223,554
App. No.
13/840,647
Granted
Dec 29, 2015
Kind
B1
Abstract

Recovering structure from binaries is disclosed. A binary file having components including a plurality of linker objects is received. A cross reference map of linker objects is created. The linker objects are associated based on calls. An address space distance for each call is determined. Boundaries are defined in the cross reference map based on the address space distance. Subsets are defined as portions of the file that are separated by the boundaries.

Claims (34)

1. A system, comprising:

a set of one or more processors programmed with instructions to:

receive a pre-existing binary file previously built from a plurality of intermediate components previously created from source code;

create a cross reference map of at least some of the intermediate components within the pre-existing binary file, wherein the intermediate components are associated based on calls;

determine an address space distance for each call in the cross reference map;

define a set of estimated boundaries in the cross reference map by at least one of (1) inserting links in the cross reference map based on the address space distance and (2) pruning links in the cross reference map based on the address space distance;

define subsets as portions of the pre-existing binary file that are separated by the set of estimated boundaries; and

provide as output, a listing of at least some of the defined subsets, wherein at least some of the output subsets correspond to program structure; and

a memory coupled to the set of one or more processors and configured to provide the set of one or more processors with instructions.

2. The system of claim 1 wherein the cross reference map comprises a function call graph.

3. The system of claim 1 wherein the cross reference map comprises function-data references.

4. The system of claim 1 wherein one or more intermediate components included in the pre-existing binary file are full linker objects.

5. The system of claim 1 wherein one or more intermediate components included in the pre-existing binary file are a necessary subset of code and data present in a full linker object.

6. The system of claim 1 wherein at least one estimated boundary comprises a linker object boundary.

7. The system of claim 1 wherein at least one estimated boundary comprises a static library function boundary.

8. The system of claim 1 wherein the set of one or more processors is further configured to recover function scope information.

9. The system of claim 1 wherein the set of one or more processors is further configured to recover data scope information.

10. The system of claim 1 wherein the set of one or more processors is further configured to recover data boundaries for linker objects.

11. The system of claim 1 wherein the set of one or more processors is further configured to recover data boundaries for static libraries.

12. The system of claim 1 wherein the set of one or more processors is further configured to recover source code layout.

13. The system of claim 1 wherein the set of one or more processors is further configured to recover linker command line order.

14. The system of claim 1 wherein the set of one or more processors is further configured to recover a list of functions that are part of an API.

15. The system of claim 1 wherein the set of one or more processors is further configured to recover boundaries at least in part by using a clustering technique.

16. The system of claim 1 , wherein the set of one or more processors is further configured to define the set of estimated boundaries at least in part by identifying articulation nodes in a graph.

17. The system of claim 1 , wherein the set of one or more processors is further configured to define the set of estimated boundaries at least in part by computing a minimum cut in a graph.

18. A method, comprising:

receiving a pre-existing binary file previously built from a plurality of intermediate components previously created from source code;

creating a cross reference map of at least some of the intermediate components within the pre-existing binary file, wherein the intermediate components are associated based on calls;

determining an address space distance for each call in the cross reference map;

defining, using a set of one or more processors, a set of estimated boundaries in the cross reference map by at least one of (1) inserting links in the cross reference map based on the address space distance and (2) pruning links in the cross reference map based on the address space distance;

defining subsets as portions of the pre-existing binary file that are separated by the set of estimated boundaries; and

providing as output, a listing of at least some of the defined subsets, wherein at least some of the output subsets correspond to program structure.

19. The method of claim 18 wherein the cross reference map comprises a function call graph.

20. The method of claim 18 wherein the cross reference map comprises function-data references.

Assignments (4)
CORRECTIVE ASSIGNMENT TO CORRECT THE EXECUTION DATE PREVIOUSLY RECORDED AT REEL: 039384 FRAME: 0478. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER EFFECTIVE DATE 05/26/2016. Recorded Aug 10, 2016
From: RIDDLE CAPITAL LLC
To: ORCHARD VALLEY MANAGEMENT LLC
Reel/Frame 039645/0059 →
MERGER Recorded Aug 9, 2016
From: SOURCEDNA, INC.
To: RIDDLE CAPITAL LLC
Reel/Frame 039384/0302 →
MERGER Recorded Aug 9, 2016
From: RIDDLE CAPITAL LLC
To: ORCHARD VALLEY MANAGEMENT LLC
Reel/Frame 039384/0478 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 2, 2013
From: LAWSON, NATHANIEL J.
To: SOURCEDNA, INC.
Reel/Frame 030728/0001 →
Continuity (3)
Provisional Application 61623514 · Apr 12, 2012
Provisional Application 61623519 · Apr 12, 2012
Provisional Application 61623524 · Apr 12, 2012