IP Library Patent Application 18886941
Patent Application
App. No. 18/886,941

SYSTEMS, METHODS, AND COMPUTER-READABLE MEDIA FOR MONITORING THIRD PARTY SOFTWARE RUNTIME OPERATIONS WITHOUT KERNEL MODE ACCESS

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 None
App. No.
18/886,941
Abstract

Systems, methods, and computer-readable media for telemetry intercept and analysis tools to work with programming languages that do not provide kernel access are provided. Programming languages such as Go do not provide kernel access and do not call standard library functions during operation of the application executable. A library constructor can be used to modify the application executable so that telemetry data can be obtained by an interception library even though the application executable does not call any functions in the interception library.

Claims (71)

1 . A system, comprising:

a server for running a library constructor service that operates in conjunction with an application being deployed on a customer computer system, wherein the application is executed without kernel mode access that precludes an interception library from being accessed during function calls by the application;

wherein the library constructor service is operative to:

identify function calls within an application executable maintained in memory but not yet commenced in execution;

overwrite one or more of the identified function calls with a respective patch function, wherein each patch function temporarily transfers control from the application executable to the interception library, wherein the interception library enables telemetry data to be collected during execution of the application executable; and

replay the identified function calls that were overwritten with respective patch functions.

2 . The system of claim 1 , wherein the application is a Go based application.

3 . The system of claim 1 , wherein the server runs a telemetry service that collects telemetry data via the interception library while the application is executed and uploads the telemetry data to a telemetry interception and analytics platform.

4 . The system of claim 1 , wherein for identifying function calls, the library constructor service is further operative to:

temporarily map a second copy of the application executable into a memory, wherein the second copy of the executable comprises an executable and linkable format (ELF) file header at a null offset;

search the ELF header to locate a section header table;

search the section header table to locate a symbol table or a line table;

search the symbol table or line table to find relative offsets of the call functions in memory, wherein the relative offsets are used for patch function overwriting; and

unmap the second copy of the application executable from the memory.

5 . The system of claim 1 , wherein for the replay, the library constructor service is further operative to:

calculate a byte length of a jump function, wherein the jump function is included in each patch function;

decode instructions at an original call function to sufficiently account for at least the byte length of the jump function;

copy the decoded instruction to a memory location;

copy a return instruction to the memory location, wherein the return instruction returns control back to the patched function after the jump instruction is complete; and

update the copied decoded and return instructions to account for updated locations in the memory.

6 . The system of claim 1 , wherein the library constructor service is further operative to adjust a memory stack size to enable interception library operations to occur without resizing a memory stack of the application executable.

7 . The system of claim 6 , wherein the library constructor service is further operative to:

record a current stack pointer;

allocate a fixed size stack from an operating system;

save the current stack pointer in the fixed size stack; and

set the current stack pointer to a location after the save location in the fixed size stack.

8 . The system of claim 7 , wherein the library constructor service is further operative to:

in response to a return from the interception library, the current stack point is restored by loading it from the set to the save location; and

discard the fixed size stack.

9 . The system of claim 1 , wherein when the application executable is executed, the application executable transfers control to the interception library via the patch function when a function call is executed by the application executable.

10 . A system, comprising:

a first server comprising a first processor to run a telemetry interception and analysis platform (TIAP) comprising an event service operative to receive telemetry events from a TIAP runtime being executed on a customer computer system in conjunction with an application being executed on the customer computer system, wherein the application is executed without kernel mode access that precludes an interception library from being accessed during function calls by the application; and

a second server comprising a second processor to run a library constructor service operative to modify an application executable to enable telemetry data to be obtained by the TIAP runtime, wherein the library constructor service is operative to:

identify function calls within the application executable maintained in memory but not yet commenced in execution;

overwrite one or more of the identified function calls with a respective patch function, wherein each patch function temporarily transfers control from the application executable to the interception library, wherein the interception library enables telemetry data to be collected during execution of the application executable; and

replay the identified function calls that were overwritten with respective patch functions.

11 . The system of claim 10 , wherein when the application executable is executed, the application executable transfers control to the interception library via the patch function when a function call is executed by the application executable.

12 . The system of claim 10 , wherein the application is a Go based application.

13 . The system of claim 10 , wherein for identifying function calls, the library constructor service is further operative to:

temporarily map a second copy of the application executable into a memory, wherein the second copy of the executable comprises an executable and linkable format (ELF) file header at a null offset;

search the ELF header to locate a section header table;

search the section header table to locate a symbol table or a line table;

search the symbol table or line table to find relative offsets of the call functions in memory, wherein the relative offsets are used for patch function overwriting; and

unmap the second copy of the application executable from the memory.

14 . The system of claim 10 , wherein for the replay, the library constructor service is further operative to:

calculate a byte length of a jump function, wherein the jump function is included in each patch function;

decode instructions at an original call function to sufficiently account for at least the byte length of the jump function;

copy the decoded instruction to a memory location;

copy a return instruction to the memory location, wherein the return instruction returns control back to the patched function after the jump instruction is complete; and

update the copied decoded and return instructions to account for updated locations in the memory.

15 . The system of claim 10 , wherein the library constructor service is further operative to adjust a memory stack size to enable interception library operations to occur without resizing a memory stack of the application executable.

16 . A method for operating a library constructor service in conjunction with a telemetry interception and analysis platform (TIAP) comprising:

receiving, by a TIAP comprising an event service, telemetry events from a TIAP runtime being executed on a customer computer system in conjunction with an application being executed on the customer computer system, wherein the application is executed without kernel mode access that precludes an interception library from being accessed during function calls by the application; and

modifying, at the library constructer service, an application executable to enable telemetry data to be obtained by the TIAP runtime, wherein said modifying comprises:

identifying function calls within the application executable maintained in memory but not yet commenced in execution;

overwriting one or more of the identified function calls with a respective patch function, wherein each patch function temporarily transfers control from the application executable to the interception library, wherein the interception library enables telemetry data to be collected during execution of the application executable; and

replaying the identified function calls that were overwritten with respective patch functions.

17 . The method of claim 16 , wherein when the application executable is executed, the application executable transfers control to the interception library via the patch function when a function call is executed by the application executable.

18 . The method of claim 16 , wherein the application is a Go application.

19 . The method of claim 16 , wherein said identifying function calls comprises:

temporarily mapping a second copy of the application executable into a memory, wherein the second copy of the executable comprises an executable and linkable format (ELF) file header at a null offset;

searching the ELF header to locate a section header table;

searching the section header table to locate a symbol table or a line table;

searching the symbol table or line table to find relative offsets of the call functions in memory, wherein the relative offsets are used for patch function overwriting; and

unmapping the second copy of the application executable from the memory.

20 . The method of claim 16 , wherein said replaying comprises:

calculating a byte length of a jump function, wherein the jump function is included in each patch function;

decoding instructions at an original call function to sufficiently account for at least the byte length of the jump function;

copying the decoded instruction to a memory location;

copying a return instruction to the memory location, wherein the return instruction returns control back to the patched function after the jump instruction is complete; and

updating the copied decoded and return instructions to account for updated locations in the memory.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 16, 2024
From: LARKIN, MICHAEL KEVIN
To: DEEPFACTOR, INC.
Reel/Frame 068602/0096 →