Method and system for facilitating replacement of system calls
View Patent ↗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.
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.