IP Library Granted Patent US 10,628,188
Granted Patent B2
US 10,628,188 · App. 16/112,329 · Granted Apr 21, 2020

Disabling just-in-time translation for application functions

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/4552
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,628,188
App. No.
16/112,329
Granted
Apr 21, 2020
Kind
B2
Abstract

Techniques to facilitate prevention of just-in-time (JIT) translations of application functions are disclosed herein. In at least one implementation, a JIT translation function of an operating system is modified in memory to redirect the JIT translation function to execute alternative code when the JIT translation function is called. When the JIT translation function is called for an application function, the alternative code is executed to determine whether the application function has been modified. When the alternative code determines that the application function has been modified, the JIT translation function is prevented from translating the application function into a native machine code version. When the alternative code determines that the application function has not been modified, the JIT translation function is allowed to translate the application function into the native machine code version.

Claims (35)

1. A method to facilitate prevention of just-in-time translations of application functions, the method comprising:

modifying a just-in-time (JIT) translation function of an operating system in memory to redirect the JIT translation function to execute alternative code when the JIT translation function is called;

when the JIT translation function is called for an application function, executing the alternative code to determine whether the application function has been modified;

when the alternative code determines that the application function has been modified, preventing the JIT translation function from translating the application function into a native machine code version; and

when the alternative code determines that the application function has not been modified, allowing the JIT translation function to translate the application function into the native machine code version.

2. The method of claim 1 wherein executing the alternative code to determine whether the application function has been modified comprises determining whether the application function has been modified in memory to intercept an execution of the application function and instead run customized program code.

3. The method of claim 1 wherein executing the alternative code to determine whether the application function has been modified comprises checking whether the application function is included in a list of modified application functions.

4. The method of claim 3 wherein checking whether the application function is included in the list of modified application functions comprises querying the list of modified application functions with the application function and receiving a Boolean value returned from the querying that indicates whether the application function is included in the list of modified application functions.

5. The method of claim 1 further comprising modifying the application function in memory to intercept an execution of the application function and instead run customized program code and including the application function in a list of modified application functions upon modifying the application function in memory.

6. The method of claim 1 wherein the application function comprises a bytecode version of the application function.

7. The method of claim 1 wherein the JIT translation function is called for the application function after a threshold number of calls to the application function are exceeded.

8. One or more computer-readable storage media having program instructions stored thereon to facilitate prevention of just-in-time translations of application functions, wherein the program instructions, when executed by a computing system, direct the computing system to at least:

modify a just-in-time (JIT) translation function of an operating system in memory to redirect the JIT translation function to execute alternative code when the JIT translation function is called;

when the JIT translation function is called for an application function, execute the alternative code to determine whether the application function has been modified;

when the alternative code determines that the application function has been modified, prevent the JIT translation function from translating the application function into a native machine code version; and

when the alternative code determines that the application function has not been modified, allow the JIT translation function to translate the application function into the native machine code version.

9. The one or more computer-readable storage media of claim 8 wherein the program instructions direct the computing system to execute the alternative code to determine whether the application function has been modified by directing the computing system to determine whether the application function has been modified in memory to intercept an execution of the application function and instead run customized program code.

10. The one or more computer-readable storage media of claim 8 wherein the program instructions direct the computing system to execute the alternative code to determine whether the application function has been modified by directing the computing system to check whether the application function is included in a list of modified application functions.

11. The one or more computer-readable storage media of claim 10 wherein the program instructions direct the computing system to check whether the application function is included in the list of modified application functions by directing the computing system to query the list of modified application functions with the application function and receive a Boolean value returned from the query that indicates whether the application function is included in the list of modified application functions.

12. The one or more computer-readable storage media of claim 8 wherein the program instructions further direct the computing system to modify the application function in memory to intercept an execution of the application function and instead run customized program code and include the application function in a list of modified application functions upon modifying the application function in memory.

13. The one or more computer-readable storage media of claim 8 wherein the application function comprises a bytecode version of the application function.

14. The one or more computer-readable storage media of claim 8 wherein the JIT translation function is called for the application function after a threshold number of calls to the application function are exceeded.

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:

modify a just-in-time (JIT) translation function of an operating system in memory to redirect the JIT translation function to execute alternative code when the JIT translation function is called;

when the JIT translation function is called for an application function, execute the alternative code to determine whether the application function has been modified;

when the alternative code determines that the application function has been modified, prevent the JIT translation function from translating the application function into a native machine code version; and

when the alternative code determines that the application function has not been modified, allow the JIT translation function to translate the application function into the native machine code version.

16. The computing apparatus of claim 15 wherein the program instructions direct the processing system to execute the alternative code to determine whether the application function has been modified by directing the processing system to determine whether the application function has been modified in memory to intercept an execution of the application function and instead run customized program code.

17. The computing apparatus of claim 15 wherein the program instructions direct the processing system to execute the alternative code to determine whether the application function has been modified by directing the processing system to check whether the application function is included in a list of modified application functions.

18. The computing apparatus of claim 17 wherein the program instructions direct the processing system to check whether the application function is included in the list of modified application functions by directing the processing system to query the list of modified application functions with the application function and receive a Boolean value returned from the query that indicates whether the application function is included in the list of modified application functions.

19. The computing apparatus of claim 15 wherein the program instructions further direct the processing system to modify the application function in memory to intercept an execution of the application function and instead run customized program code and include the application function in a list of modified application functions upon modifying the application function in memory.

20. The computing apparatus of claim 15 wherein the application function comprises a bytecode version of the application function.

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/0137 →