Legal claims defining the scope of protection, as filed with the USPTO.
1. A method for dynamically modifying shared libraries on a client computing device, comprising: receiving a first set of code segments and a first set of code sites associated with a first application, wherein: the first application is configured, prior to inserting the first set of code segments into a compiled shared library stored on the client computing device, to utilize a virtual address for each code segment in the first set of code segments from the compiled shared library; each code site in the first set of code sites comprises an address within the compiled shared library; the compiled shared library includes one or more dummy instructions inserted at each code site in the first set of code sites; and each code segment in the first set of code segments is associated with a code site in the first set of code sites; inserting each code segment in the first set of code segments at its associated code site in the compiled shared library; and executing the first application using at least one of the inserted code segments from the compiled shared library.
2. The method of claim 1 , further comprising: receiving a request to modify the compiled shared library from the first application; determining whether the first application is authorized to modify the compiled shared library; and denying the request to modify the compiled shared library in response to determining that the first application is not authorized to modify the compiled shared library.
3. The method of claim 1 , wherein inserting each code segment at its associated code site in the compiled shared library comprises: copying an original memory page of the compiled shared library containing a first code site in the first set of code sites; overwriting the one or more dummy instructions at the first code site of the copied memory page with an associated code segment; and overwriting the original memory page with the copied memory page.
4. The method of claim 1 , wherein inserting each code segment at its associated code site in the compiled shared library comprises: copying an original memory page of the compiled shared library containing a first code site in the first set of code sites; overwriting the one or more dummy instructions at the first code site of the copied memory page with an associated code segment; un-mapping the original memory page from an address space of the compiled shared library associated with the first application; and mapping the copied memory page into the address space at a same address location as the original memory page.
5. The method of claim 1 , wherein inserting each code segment at its associated code site in the compiled shared library comprises: overwriting the one or more dummy instructions at a first code site in the first set of code sites in the compiled shared library with an associated code segment.
6. The method of claim 1 , further comprising: receiving a second set of code segments and a second set of code sites associated with a second application, wherein: each code site in the second set of code sites comprises an address within the compiled shared library; the compiled shared library includes one or more dummy instructions inserted at each code site in the second set of code sites; and each code segment in the second set of code segments is associated with a code site in the second set of code sites; and inserting each code segment in the first set of code segments and the second set of code segments at its associated code site in the compiled shared library.
7. The method of claim 1 , further comprising: removing the first set of code segments inserted into the compiled shared library from memory when the compiled shared library is unloaded from memory.
8. A method for compiling shared libraries on a computing device, comprising: receiving a set of code sites prior to compiling a shared library, wherein each code site in the set of code sites comprises an address within the shared library stored on the computing device; compiling the shared library, wherein one or more dummy instructions are inserted in the compiled shared library at each code site in the set of code sites; and executing an application using an inserted code segment from the compiled shared library, wherein the inserted code segment is inserted into the compiled shared library at a first address of a first dummy instruction of the one or more dummy instructions in the compiled shared library.
9. The method of claim 8 , further comprising: providing the compiled shared library to one or more client computing devices.
10. A client computing device, comprising: a memory storing a compiled shared library; and a processor coupled to the memory and configured with processor-executable instructions to: receive a first set of code segments and a first set of code sites associated with a first application, wherein: the first application is configured, prior to inserting the first set of code segments into the compiled shared library stored on the client computing device, to utilize a virtual address for each code segment in the first set of code segments from the compiled shared library at runtime; each code site in the first set of code sites comprises an address within the compiled shared library; the compiled shared library includes one or more dummy instructions inserted at each code site in the first set of code sites; and each code segment in the first set of code segments is associated with a code site in the first set of code sites; insert each code segment in the first set of code segments at its associated code site in the compiled shared library; and executing the first application using at least one of the inserted code segments from the compiled shared library.
11. The client computing device of claim 10 , wherein the processor coupled is further configured with processor-executable instructions to: receive a request to modify the compiled shared library from the first application; determine whether the first application is authorized to modify the compiled shared library; and deny the request to modify the compiled shared library in response to determining that the first application is not authorized to modify the compiled shared library.
12. The client computing device of claim 10 , wherein the processor is further configured with processor-executable instructions to insert each code segment at its associated code site in the compiled shared library by: copying an original memory page of the compiled shared library containing a first code site in the first set of code sites; overwriting the one or more dummy instructions at the first code site of the copied memory page with an associated code segment; and overwriting the original memory page with the copied memory page.
13. The client computing device of claim 10 , wherein the processor is further configured with processor-executable instructions to insert each code segment at its associated code site in the compiled shared library by: copying an original memory page of the compiled shared library containing a first code site in the first set of code sites; overwriting the one or more dummy instructions at the first code site of the copied memory page with an associated code segment; un-mapping the original memory page from an address space of the compiled shared library associated with the first application; and mapping the copied memory page into the address space at a same address location as the original memory page.
14. The client computing device of claim 10 , wherein the processor is further configured with processor-executable instructions to insert each code segment at its associated code site in the compiled shared library by: overwriting the one or more dummy instructions at a first code site in the first set of code sites in the compiled shared library with an associated code segment.
15. The client computing device of claim 10 , wherein the processor coupled is further configured with processor-executable instructions to: receive a second set of code segments and a second set of code sites associated with a second application, wherein: each code site in the second set of code sites comprises an address within the compiled shared library; the compiled shared library includes one or more dummy instructions inserted at each code site in the second set of code sites; and each code segment in the second set of code segments is associated with a code site in the second set of code sites; and insert each code segment in the first set of code segments and the second set of code segments at its associated code site in the compiled shared library.
16. The client computing device of claim 10 , wherein the processor coupled is further configured with processor-executable instructions to: remove the first set of code segments inserted into the compiled shared library from memory when the compiled shared library is unloaded from memory.
17. A computing device, comprising: a memory storing a shared library; and a processor coupled to the memory and configured with processor-executable instructions to: receive a set of code sites prior to compiling the shared library, wherein each code site in the set of code sites comprises an address within the shared library; compile the shared library, wherein one or more dummy instructions are inserted in the compiled shared library at each code site in the set of code sites; and executing an application using an inserted code segment from the compiled shared library, wherein the inserted code segment is inserted into the compiled shared library at a first address of a first dummy instruction of the one or more dummy instructions in the compiled shared library.
18. The computing device of claim 17 , wherein the processor is further configured with processor-executable instructions to: provide the compiled shared library to one or more client computing devices.
Unknown
November 13, 2018
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.