IP Library Granted Patent US 10,606,612
Granted Patent B2
US 10,606,612 · App. 16/112,305 · Granted Mar 31, 2020

Context check bypass to enable opening shared-object libraries

Inventors: Jeff DiTullio (Menlo Park, CA); Michael Ryan Fenton (Thunder Bay, CA); James Brandon Koppel (Cambridge, MA); Timothy D. Lundeen (San Francisco, CA)
Assignee: Apptimize LLC
G06F9/44521G06F9/4484
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 10,606,612
App. No.
16/112,305
Granted
Mar 31, 2020
Kind
B2
Abstract

Techniques to bypass system context checks to facilitate opening shared-object libraries are disclosed herein. In at least one implementation, a copy of a header of a shared-object library loaded by a runtime system is created. The header of the shared-object library loaded by the runtime system is patched with code configured to call an open function, wherein the code patched into the header of the shared-object library executes and calls the open function from the shared-object library loaded by the runtime system, the call to the open function is recognized as within a context of the runtime system, and the shared-object library is allowed to be opened. A pointer to the shared-object library opened in memory is received, and the header of the shared-object library is restored to an original version using the copy of the header of the shared-object library.

Claims (35)

1. A method to bypass system context checks to facilitate opening shared-object libraries, the method comprising:

creating a copy of a header of a shared-object library loaded by a runtime system;

patching the header of the shared-object library loaded by the runtime system with code configured to call an open function, wherein the code patched into the header of the shared-object library executes and calls the open function from the shared-object library loaded by the runtime system, the call to the open function is recognized as within a context of the runtime system, and the shared-object library is allowed to be opened;

receiving a pointer to the shared-object library opened in memory; and

restoring the header of the shared-object library to an original version using the copy of the header of the shared-object library.

2. The method of claim 1 further comprising determining where the shared-object library is located in the memory.

3. The method of claim 2 wherein determining where the shared-object library is located in the memory comprises determining a base memory address of the shared-object library based on a call address of the shared-object library.

4. The method of claim 3 further comprising marking a paging of the base memory address of the shared-object library as writable.

5. The method of claim 1 wherein the open function comprises a dlopen function.

6. The method of claim 1 wherein the call to the open function is recognized as within the context of the runtime system and the shared-object library is allowed to be opened based on a return address of the call to the open function being within the context of the runtime system.

7. The method of claim 1 wherein receiving the pointer to the shared-object library opened in memory comprises receiving the pointer to the shared-object library opened in memory returned from the call to the open function from the shared-object library loaded by the runtime system.

8. One or more computer-readable storage media having program instructions stored thereon to bypass system context checks to facilitate opening shared-object libraries, wherein the program instructions, when executed by a computing system, direct the computing system to at least:

create a copy of a header of a shared-object library loaded by a runtime system;

patch the header of the shared-object library loaded by the runtime system with code configured to call an open function, wherein the code patched into the header of the shared-object library executes and calls the open function from the shared-object library loaded by the runtime system, the call to the open function is recognized as within a context of the runtime system, and the shared-object library is allowed to be opened;

receive a pointer to the shared-object library opened in memory; and

restore the header of the shared-object library to an original version using the copy of the header of the shared-object library.

9. The one or more computer-readable storage media of claim 8 wherein the program instructions further direct the computing system to determine where the shared-object library is located in the memory.

10. The one or more computer-readable storage media of claim 9 wherein the program instructions direct the computing system to determine where the shared-object library is located in the memory by directing the computing system to determine a base memory address of the shared-object library based on a call address of the shared-object library.

11. The one or more computer-readable storage media of claim 10 wherein the program instructions further direct the computing system to mark a paging of the base memory address of the shared-object library as writable.

12. The one or more computer-readable storage media of claim 8 wherein the open function comprises a dlopen function.

13. The one or more computer-readable storage media of claim 8 wherein the call to the open function is recognized as within the context of the runtime system and the shared-object library is allowed to be opened based on a return address of the call to the open function being within the context of the runtime system.

14. The one or more computer-readable storage media of claim 8 wherein the pointer to the shared-object library opened in memory is returned from the call to the open function from the shared-object library loaded by the runtime system.

15. A computing apparatus comprising:

one or more computer-readable storage media;

a processing system operatively coupled with the one or more computer-readable storage media; and

a mobile application stored on the one or more computer-readable storage media and including an embedded control module comprising program instructions that, when executed by the processing system, direct the processing system to at least:

create a copy of a header of a shared-object library loaded by a runtime system;

patch the header of the shared-object library loaded by the runtime system with code configured to call an open function, wherein the code patched into the header of the shared-object library executes and calls the open function from the shared-object library loaded by the runtime system, the call to the open function is recognized as within a context of the runtime system, and the shared-object library is allowed to be opened;

receive a pointer to the shared-object library opened in memory; and

restore the header of the shared-object library to an original version using the copy of the header of the shared-object library.

16. The computing apparatus of claim 15 wherein the program instructions further direct the processing system to determine where the shared-object library is located in the memory.

17. The computing apparatus of claim 16 wherein the program instructions direct the processing system to determine where the shared-object library is located in the memory by directing the processing system to determine a base memory address of the shared-object library based on a call address of the shared-object library.

18. The computing apparatus of claim 17 wherein the program instructions further direct the processing system to mark a paging of the base memory address of the shared-object library as writable.

19. The computing apparatus of claim 15 wherein the open function comprises a dlopen function.

20. The computing apparatus of claim 15 wherein the call to the open function is recognized as within the context of the runtime system and the shared-object library is allowed to be opened based on a return address of the call to the open function being within the context of the runtime system.

Assignments (6)
SECURITY INTEREST Recorded Jul 1, 2024
From: AIRSHIP GROUP, INC.; APPTIMIZE, LLC
To: RUNWAY GROWTH FINANCE CORP.
Reel/Frame 068099/0779 →
RELEASE OF SECURITY INTEREST Recorded Jun 28, 2024
From: WELLS FARGO BANK, NATIONAL ASSOCIATION
To: AIRSHIP GROUP, INC.; APPTIMIZE, LLC
Reel/Frame 067965/0545 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE'S NAME TO ADD A COMMA BETWEEN APPTIMIZE AND LLC PREVIOUSLY RECORDED ON REEL 050612 FRAME 0128. ASSIGNOR(S) HEREBY CONFIRMS THE CHANGE OF NAME. Recorded Feb 9, 2021
From: APPTIMIZE, INC.
To: APPTIMIZE, LLC
Reel/Frame 055278/0689 →
SECURITY INTEREST Recorded Apr 2, 2020
From: URBAN AIRSHIP, INC.; APPTIMIZE, LLC
To: WELLS FARGO BANK, NATIONAL ASSOCIATION
Reel/Frame 052308/0550 →
CHANGE OF NAME Recorded Oct 2, 2019
From: APPTIMIZE, INC.
To: APPTIMIZE LLC
Reel/Frame 050612/0128 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 19, 2019
From: DITULLIO, JEFF; FENTON, MICHAEL RYAN; KOPPEL, JAMES BRANDON; LUNDEEN, TIMOTHY D.
To: APPTIMIZE, INC.
Reel/Frame 048374/0527 →