10127018

Dynamic Addition of Code in Shared Libraries

PublishedNovember 13, 2018
Assigneenot available in USPTO data we have
Technical Abstract

Patent Claims
18 claims

Legal claims defining the scope of protection, as filed with the USPTO.

1

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

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

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

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

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

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

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

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

9. The method of claim 8 , further comprising: providing the compiled shared library to one or more client computing devices.

10

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

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

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

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

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

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

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

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

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.

Patent Metadata

Filing Date

Unknown

Publication Date

November 13, 2018

Inventors

Sudha Anil Kumar GATHALA
Mihai CHRISTODORESCU
Mastooreh SALAJEGHEH

Want to explore more patents?

Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.

Citation & reuse

Analysis on this page is generated by Patentable — an AI-powered patent intelligence platform. AI-generated summaries, explanations, and analysis may be reused with attribution and a visible link back to the canonical URL below. Patent abstracts and claims are USPTO public domain.

Cite as: Patentable. “Dynamic Addition of Code in Shared Libraries” (10127018). https://patentable.app/patents/10127018

© 2026 Patentable. All rights reserved.

Patentable is a research and drafting-assistant tool, not a law firm, and does not provide legal advice. Documents we generate are drafts for review by a licensed patent attorney.