IP Library Granted Patent US 10,452,370
Granted Patent B2
US 10,452,370 · App. 15/542,214 · Granted Oct 22, 2019

System, method and computer readable medium for space-efficient binary rewriting

Inventors: Jack W. Davidson (Charlottesville, VA); Clark Lynch Coleman (Charlottesville, VA); Jason D. Hiser (Charlottesville, VA); Anh Nguyen-Tuong (Charlottesville, VA)
Assignee: UNIVERSITY OF VIRGINIA PATENT FOUNDATION
G06F8/52G06F8/53G06F8/44G06F8/48
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 10,452,370
App. No.
15/542,214
Granted
Oct 22, 2019
Kind
B2
Abstract

According to some illustrative embodiments of the invention, a method is performed that includes using a representation of a computer software program, using identified addresses which correspond to a part of the representation, and converting the representation into a created binary program, which includes reserving spaces at the identified addresses in the created binary program's address space at the same addresses as the identified addresses in the representation.

Claims (28)

1. A method, comprising:

using a representation of a computer software program;

using identified addresses which correspond to a part of the representation; and

converting the representation into a created binary program, which includes reserving spaces at the identified addresses in the created binary program's address space at the same addresses as the identified addresses in the representation,

wherein space reserved from spatially nearby identified addresses is coalesced.

2. The method of claim 1 , wherein the identified addresses are addresses of indirect branch targets.

3. The method of claim 2 , wherein another method is used for rewriting some indirect branches or indirect branch targets.

4. The method of claim 1 , wherein the identified addresses are an approximation of indirect branch targets.

5. The method of claim 4 , wherein another method is used for rewriting some indirect branches or indirect branch targets.

6. The method of claim 1 , wherein the representation is created by analyzing a computer software program.

7. The method of claim 6 , wherein the analyzing is disassembling a computer software program.

8. The method of claim 6 , wherein the created binary program does not include at least a portion of a copy of code from the computer software program.

9. The method of claim 6 , wherein the created binary program does not include an entire copy of code from the computer software program.

10. The method of claim 1 , wherein the identified addresses are generated by analyzing a computer software program or the representation of a computer software program.

11. The method of claim 10 , wherein the analyzing includes scanning for indirect branch targets.

12. The method of claim 1 , wherein the representation is modified by applying a transformation of the representation that modifies the representation.

13. The method of claim 1 , wherein the space reserved is used to transfer control to the corresponding part of the representation.

14. The method of claim 1 , wherein the space reserved is used to directly represent the corresponding part of the representation.

15. The method of claim 1 , wherein a portion or all of the data of the computer software program is included in the created binary program.

16. The method of claim 1 , wherein the created binary program does not include at least a portion of a copy of code from another analyzed binary program.

17. The method of claim 1 , wherein the created binary program does not include an entire copy of code from another analyzed binary program.

18. The method of claim 1 , wherein the space is reserved at all of the identified addresses.

19. The method of claim 1 , wherein the space is reserved at only some of the identified addresses.

20. The method of claim 1 , wherein the space reserved is used to put a sequence of bytes, where each address in the coalesced reserved space, when executed by a processor, will cause machine state to be different than if a different address executed.

21. The method of claim 20 , wherein the differences in machine state are predictable to the system that produces the created binary program.

22. The method of claim 20 , wherein machine state differences are used to execute the corresponding part of the representation.

23. The method of claim 20 , wherein the sequence of bytes, when executed, will cause the machine state to be modified, then the machine state will be reverted to its unmodified state.

24. The method of claim 1 , where the representation of a program includes one or more of the following: a compiler-style intermediate representation, a binary software program, bytecodes, a control flow graph, a call graph, a data dependence graph, a static single assignment representation, a 3-operand intermediate representation.

Assignments (3)
CONFIRMATORY LICENSE Recorded Nov 5, 2019
From: ZEPHYR SOFTWARE LLC
To: UNITED STATES GOVERNMENT AS REPRESENTED BY THE SECRETARY OF THE ARMY
Reel/Frame 050931/0090 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 12, 2017
From: UNIVERSITY OF VIRGINIA
To: UNIVERSITY OF VIRGINIA PATENT FOUNDATION D/B/A UNIVERSITY OF VIRGINIA LICENSING & VENTURES GROUP
Reel/Frame 042985/0772 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 7, 2017
From: HISER, JASON D.; NGUYEN-TUONG, ANH
To: UNIVERSITY OF VIRGINIA
Reel/Frame 042931/0898 →
Continuity (3)
Provisional Application 62101929 · Jan 9, 2015
Provisional Application 62200324 · Aug 3, 2015
Related Publication 20170371635A1 · Dec 28, 2017