IP Library Granted Patent US 10,248,434
Granted Patent B2
US 10,248,434 · App. 14/935,304 · Granted Apr 2, 2019

Launching an application

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,248,434
App. No.
14/935,304
Granted
Apr 2, 2019
Kind
B2
Abstract

Systems, methods, and software can be used to launch an application. In some aspects, a plurality of process classes is configured. Each of the plurality of process classes includes one or more applications. Each of the process classes is configured to be associated with a template process. Each template process is associated with a different randomized memory layout. A launch request for an application is received. A process class that is associated with the application is determined in response to the launching request. The application is launched using the template process associated with the determined process class.

Claims (49)

1. A method performed by a hardware processor of a mobile device, comprising:

configuring, at the mobile device, a plurality of process classes, wherein each of the process classes is associated with a template process among a plurality of template processes, each template process of the plurality of template processes is associated with a different randomized memory layout among a plurality of randomized memory layouts, and at least one of the randomized memory layouts is associated with a plurality of applications in a same template process;

receiving, at the mobile device, a launching request for an application;

in response to receiving the launching request for the application, determining a process class, among the plurality of process classes, that is associated with the application; and

in response to determining the process class associated with the application, launching the application through a forked template process associated with the determined process class, wherein other different forked template processes from the plurality of template processes are running on the mobile device.

2. The method of claim 1 , wherein the plurality of process classes include a process class for system applications, a process class for enterprise applications, and a process class for personal applications.

3. The method of claim 1 , further comprising:

determining a number of applications that have been launched by the forked template process associated with the determined process class;

determining that the number of applications that have been launched by the forked template process meets a threshold; and

in response to determining that the number of applications meets the threshold, associating a second template process with the determined process class, wherein the second template process and the template process are associated with different randomized memory layouts.

4. The method of claim 3 , further comprising:

in response to determining that the number of applications that have been launched by the forked template process meets the threshold, starting a delay timer, wherein the delay timer is set to a deferred duration; and

when the delay timer expires, generating the second template process.

5. The method of claim 3 , wherein the second template process is generated before the forked template process meets the threshold.

6. The method of claim 1 , wherein the forked template process is generated using a virtual image file, and a random offset used to randomize a memory layout is shared between the forked template process and a virtual file driver.

7. The method of claim 1 , wherein the forked template process is generated by loading a system image file into a system memory of an operating system and patching the system image file based on an address offset while in the system memory.

8. A mobile device, comprising:

a memory; and

at least one hardware processor communicatively coupled with the memory and configured to:

configure, at the mobile device, a plurality of process classes, wherein each of the process classes is associated with a template process among a plurality of template processes, each of the plurality of template processes is associated with a different randomized memory layout among a plurality of randomized memory layouts, and at least one of the randomized memory layouts is associated with a plurality of applications in a same template process;

receive, at the mobile device, a launching request for an application;

in response to receiving the launching request for the application, determine a process class, among the plurality of process classes, that is associated with the application; and

in response to determining the process class associated with the application, launch the application through a forked template process associated with the determined process class, wherein other different forked template processes from the plurality of template processes are running on the mobile device.

9. The mobile device of claim 8 , wherein the plurality of process classes include a process class for system applications, a process class for enterprise applications, and a process class for personal applications.

10. The mobile device of claim 8 , wherein the at least one hardware processor is further configured to:

determine a number of applications that have been launched by the forked template process associated with the determined process class;

determine that the number of applications that have been launched by the forked template process meets a threshold; and

in response to determining that the number of applications meets the threshold, associate a second template process with the determined process class, wherein the second template process and the template process are associated with different randomized memory layouts.

11. The mobile device of claim 10 , wherein the at least one hardware processor is further configured to:

in response to determining that the number of applications that have been launched by the template process meets the threshold, start a delay timer, wherein the delay timer is set to a deferred duration; and

when the delay timer expires, generate the second template process.

12. The mobile device of claim 10 , wherein the second template process is generated before the forked template process meets the threshold.

13. The mobile device of claim 8 , wherein the forked template process is generated using a virtual image file, and a random offset used to randomize a memory layout is shared between the forked template process and a virtual file driver.

14. The mobile device of claim 8 , wherein the forked template process is generated by loading a system image file into a system memory of an operating system and patching the system image file based on an address offset while in the system memory.

15. A non-transitory computer-readable medium containing instructions which, when executed, cause a computing device to perform operations comprising:

configuring, at a mobile device, a plurality of process classes, wherein each of the process classes is associated with a template process among a plurality of template processes, each of the plurality of template processes is associated with a different randomized memory layout among a plurality of randomized memory layouts, and at least one of the randomized memory layouts is associated with a plurality of applications in a same template process;

receiving, at the mobile device, a launching request for an application;

in response to receiving the launching request for the application, determining a process class, among the plurality of process classes, that is associated with the application; and

in response to determining the process class associated with the application, launching the application through a forked template process associated with the determined process class, wherein other different forked template processes from the plurality of template processes are running on the mobile device.

16. The non-transitory computer-readable medium of claim 15 , wherein the plurality of process classes include a process class for system applications, a process class for enterprise applications, and a process class for personal applications.

17. The non-transitory computer-readable medium of claim 15 , the operations further comprising:

determining a number of applications that have been launched by the forked template process associated with the determined process class;

determining that the number of applications that have been launched by the forked template process meets a threshold; and

in response to determining that the number of applications meets the threshold, associating a second template process with the determined process class, wherein the second template process and the template process are associated with different randomized memory layouts.

18. The non-transitory computer-readable medium of claim 17 , the operations further comprising:

in response to determining that the number of applications that have been launched by the forked template process meets the threshold, starting a delay timer, wherein the delay timer is set to a deferred duration; and

when the delay timer expires, generating the second template process.

19. The non-transitory computer-readable medium of claim 17 , wherein the second template process is generated before the forked template process meets the threshold.

20. The non-transitory computer-readable medium of claim 15 , wherein the forked template process is generated using a virtual image file, and a random offset used to randomize a memory layout is shared between the forked template process and a virtual file driver.

Assignments (5)
NUNC PRO TUNC ASSIGNMENT Recorded Jun 19, 2023
From: BLACKBERRY LIMITED
To: MALIKIE INNOVATIONS LIMITED
Reel/Frame 064271/0199 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 16, 2023
From: BLACKBERRY LIMITED
To: MALIKIE INNOVATIONS LIMITED
Reel/Frame 064104/0103 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 15, 2016
From: MCKINNON, PETER; GOODMAN, KEVIN DENNIS
To: BLACKBERRY LIMITED
Reel/Frame 037503/0887 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 15, 2016
From: NEJEDLY, PETR
To: BLACKBERRY CORPORATION
Reel/Frame 037503/0971 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 4, 2016
From: BLACKBERRY CORPORATION
To: BLACKBERRY LIMITED
Reel/Frame 037401/0690 →