IP Library Granted Patent US 9,665,355
Granted Patent B2
US 9,665,355 · App. 14/826,588 · Granted May 30, 2017

Method and system for facilitating replacement of system calls

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,665,355
App. No.
14/826,588
Granted
May 30, 2017
Kind
B2
Abstract

An example method includes modifying, prior to run time, an executable file of an application to cause an operating system loader to load additional code using a dynamically-linked library. Modifying the executable file includes determining whether the executable file includes sufficient unused space to accommodate a load command, and adding the load command to the executable file when the executable file includes sufficient unused space by: shifting, in the executable file, an existing load command that does not contain dependency information to make space for the load command; or identifying unused space outside of a data portion of the executable file that can be removed to accommodate the load command. The additional code, when executed by a processor, causes the processor to change a pointer in a table that indicates an address of an imported function implementing a system call so the pointer indicates an address of a customized function.

Claims (38)

1. A method, comprising:

modifying, prior to run time, an executable file of an application to cause an operating system loader to load additional code using a dynamically-linked library, wherein modifying the executable file comprises:

determining that the executable file includes insufficient unused space to accommodate a load command; and

adding the load command to the executable file by: identifying unused space outside of a data portion of the executable file that can be used to accommodate the load command;

wherein the additional code, when executed by a processor, causes the processor to change a pointer in a table that indicates an address of an imported function implementing a system call so that the pointer indicates an address of a customized function.

2. The method of claim 1 , wherein the customized function provides network communications through a secure network connection.

3. The method of claim 1 , wherein the customized function provides data encryption functionality.

4. The method of claim 1 , further comprising:

receiving, at the application, a policy communicated through an inter-process communication mechanism, wherein the customized function provides functionality in accordance with the policy.

5. The method of claim 1 , wherein the system call comprises a call to a libc library.

6. The method of claim 1 , wherein adding the load command to the executable file includes, responsive to the executable file including insufficient unused space, moving a portion of the executable file to make space for the load command.

7. The method of claim 1 , further comprising computing a new signature for the executable file and replacing an existing signature in the executable file with the new signature.

8. A non-transitory computer readable storage medium storing instructions that when executable by a processor cause the processor to:

modify, prior to run time, an executable file of an application to cause an operating system loader to load additional code using a dynamically-linked library, wherein modifying the executable file comprises:

determining that the executable file includes insufficient unused space to accommodate a load command; and

adding the load command to the executable file by: identifying unused space outside of a data portion of the executable file that can be used to accommodate the load command;

wherein the additional code, when executed, causes a change to a pointer in a table that indicates an address of an imported function implementing a system call so that the pointer indicates an address of a customized function.

9. The non-transitory computer readable storage medium of claim 8 , wherein the customized function provides network communications through a secure network connection.

10. The non-transitory computer readable storage medium of claim 8 , wherein the customized function provides data encryption functionality.

11. The non-transitory computer readable storage medium of claim 8 , further comprising instructions that, when executed by the processor, cause the processor to:

receive, at the application, a policy communicated through an inter-process communication mechanism, wherein the customized function provides functionality in accordance with the policy.

12. The non-transitory computer readable storage medium of claim 8 , wherein the system call comprises a call to a libc library.

13. The non-transitory computer readable storage medium of claim 8 , wherein adding the load command to the executable file further includes, responsive to the executable file including insufficient unused space, move a portion of the executable file to make space for the load command.

14. The non-transitory computer readable storage medium of claim 8 , further comprising instructions that, when executed by the processor, cause the processor to:

compute a new signature for the executable file and replacing an existing signature in the executable file with the new signature.

15. A computing system, comprising:

a processor; and

a storage device coupled to the processor storing instructions that, when executed by the processor, cause the processor to:

modify, prior to run time, an executable file of an application to cause an operating system loader to load additional code using a dynamically-linked library, wherein modifying the executable file comprises:

determining that the executable file includes insufficient unused space to accommodate a load command; and

adding the load command to the executable file by: identifying unused space outside of a data portion of the executable file that can be used to accommodate the load command;

wherein the additional code, when executed, causes a change to a pointer in a table that indicates an address of an imported function implementing a system call so that the pointer indicates an address of a customized function.

16. The computing system of claim 15 , wherein the customized function provides network communications through a secure network connection.

17. The computing system of claim 15 , wherein the customized function provides data encryption functionality.

18. The computing system of claim 15 , wherein the storage device further stores instructions that, when executed by the processor, cause the processor to:

receive, at the application, a policy communicated through an inter-process communication mechanism, wherein the customized function provides functionality in accordance with the policy.

19. The computing system of claim 15 , wherein the system call comprises a call to a libc library.

20. The computing system of claim 15 , wherein adding the load command to the executable file further includes, responsive to the executable file including insufficient unused space, moving a portion of the executable file to make space for the load command.

Assignments (2)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0314 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 14, 2015
From: JAWA, MANISH; TEBEKA, HAIM; NEWELL, CRAIG
To: VMWARE, INC.
Reel/Frame 036329/0697 →