IP Library Granted Patent US 8,979,655
Granted Patent B2
US 8,979,655 · App. 13/232,990 · Granted Mar 17, 2015

System and method for securely hosting applications

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 8,979,655
App. No.
13/232,990
Granted
Mar 17, 2015
Kind
B2
Abstract

A computer-implemented system for providing a virtualized application hosting environment comprising: a plurality of application/game servers each having a memory for storing application program code and data and a processor for executing the application program code and processing the data on behalf of a client; a virtualization service executed on each of the application/game servers, the virtualization service comprising a file redirection module for redirecting file read/write operations generated by the application program code to one or more virtualized file locations; and a registry redirection module for intercepting registry operations generated by the application program code and executing the registry operations on behalf of the application program code at one or more virtualized registry locations.

Claims (60)

1. A computer-implemented method for securely loading application program code in an application hosting service comprising:

installing an application on the application hosting service;

generating a process/thread map of processes/threads included in the application, the map including an identification of each process/thread and the hierarchical relationships between the processes/threads;

receiving a request to execute processes/threads of an application;

comparing the processes/threads to be executed with the process map to determine whether each process/thread to be executed is included in the map and that each process/thread is to be executed at a correct position in the hierarchy; and

executing the processes/threads of the application if the processes/threads to be executed are found within the process/thread map at a correct position in the hierarchy specified in the process/thread map; and

if the processes/threads to be executed are not found within the process/thread map at a correct position in the hierarchy specified in the process/thread map, then refraining from executing the application.

2. The method as in claim 1 wherein if the processes/threads to be executed are not found within the process/thread map at a correct position in the hierarchy specified in the process/thread map, then rebooting a computer on which the application is attempting to be executed.

3. The method as in claim 1 further comprising:

executing a virtual machine on which the application is to be executed, the virtual machine including a virtual file system, the method further comprising redirecting file and registry requests of the application to a virtual location in the virtual file system.

4. The method as in claim 3 further comprising:

determining whether any open handles exist prior to executing the application; and

only executing the application if no open handles exist.

5. The method as in claim 1 wherein installing the application comprises:

storing application binaries and registry entries for the application within an encrypted container; and

loading the container into memory and decrypting the container only if the processes/threads to be executed are found within the process/thread map at a correct position in the hierarchy specified in the process/thread map.

6. The method as in claim 1 wherein the process/thread map further includes contextual information such that different maps can be derived for use in different contexts.

7. The method as in claim 1 further comprising:

receiving a request during system runtime to switch the process/thread map that are allowed to execute; and

responsively switching the process/thread map with a new process/thread map.

8. A system for securely loading application program code in an application hosting service, the system including a memory for storing program code and a processor for processing the program code to perform the operations of:

installing an application on the application hosting service;

generating a process/thread map of processes/threads included in the application, the map including an identification of each process/thread and the hierarchical relationships between the processes/threads;

receiving a request to execute processes/threads of an application;

comparing the processes/threads to be executed with the process map to determine whether each process/thread to be executed is included in the map and that each process/thread is to be executed at a correct position in the hierarchy; and

executing the processes/threads of the application if the processes/threads to be executed are found within the process/thread map at a correct position in the hierarchy specified in the process/thread map; and

if the processes/threads to be executed are not found within the process/thread map at a correct position in the hierarchy specified in the process/thread map, then refraining from executing the application.

9. The system as in claim 8 wherein if the processes/threads to be executed are not found within the process/thread map at a correct position in the hierarchy specified in the process/thread map, then rebooting a computer on which the application is attempting to be executed.

10. The system as in claim 8 further comprising program code to perform the operations of:

executing a virtual machine on which the application is to be executed, the virtual machine including a virtual file system, the system further comprising program code for redirecting file and registry requests of the application to a virtual location in the virtual file system.

11. The system as in claim 10 further comprising program code to perform the operations of:

determining whether any open handles exist prior to executing the application; and

only executing the application if no open handles exist.

12. The system as in claim 8 wherein installing the application comprises:

storing application binaries and registry entries for the application within an encrypted container; and

loading the container into memory and decrypting the container only if the processes/threads to be executed are found within the process/thread map at a correct position in the hierarchy specified in the process/thread map.

13. The system as in claim 8 wherein the process/thread map further includes contextual information such that different maps can be derived for use in different contexts.

14. The system as in claim 8 further comprising program code to perform the operations of:

receiving a request during system runtime to switch the process/thread map that are allowed to execute; and

responsively switching the process/thread map with a new process/thread map.

15. A machine-readable medium for securely loading application program code in an application hosting service, the machine-readable medium having program code stored thereon which, when executed by a machine, causes the machine to perform the operations of:

installing an application on the application hosting service;

generating a process/thread map of processes/threads included in the application, the map including an identification of each process/thread and the hierarchical relationships between the processes/threads;

receiving a request to execute processes/threads of an application;

comparing the processes/threads to be executed with the process map to determine whether each process/thread to be executed is included in the map and that each process/thread is to be executed at a correct position in the hierarchy; and

executing the processes/threads of the application if the processes/threads to be executed are found within the process/thread map at a correct position in the hierarchy specified in the process/thread map; and

if the processes/threads to be executed are not found within the process/thread map at a correct position in the hierarchy specified in the process/thread map, then refraining from executing the application.

16. The machine-readable medium as in claim 15 wherein if the processes/threads to be executed are not found within the process/thread map at a correct position in the hierarchy specified in the process/thread map, then rebooting a computer on which the application is attempting to be executed.

17. The machine-readable medium as in claim 15 further comprising program code to perform the operations of:

executing a virtual machine on which the application is to be executed, the virtual machine including a virtual file system, the machine-readable medium further comprising program code for redirecting file and registry requests of the application to a virtual location in the virtual file system.

18. The machine-readable medium as in claim 17 further comprising program code to perform the operations of:

determining whether any open handles exist prior to executing the application; and

only executing the application if no open handles exist.

19. The machine-readable medium as in claim 15 wherein installing the application comprises:

storing application binaries and registry entries for the application within an encrypted container; and

loading the container into memory and decrypting the container only if the processes/threads to be executed are found within the process/thread map at a correct position in the hierarchy specified in the process/thread map.

20. The machine-readable medium as in claim 15 wherein the process/thread map further includes contextual information such that different maps can be derived for use in different contexts.

21. The machine-readable medium as in claim 15 further comprising program code to perform the operations of:

receiving a request during system runtime to switch the process/thread map that are allowed to execute; and

responsively switching the process/thread map with a new process/thread map.

Assignments (6)
MERGER Recorded Mar 30, 2020
From: SONY INTERACTIVE ENTERTAINMENT AMERICA LLC
To: SONY INTERACTIVE ENTERTAINMENT LLC
Reel/Frame 053323/0567 →
CHANGE OF NAME Recorded May 5, 2016
From: SONY COMPUTER ENTERTAINMENT AMERICA LLC
To: SONY INTERACTIVE ENTERTAINMENT AMERICA LLC
Reel/Frame 038617/0474 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 1, 2015
From: OL2, INC.
To: SONY COMPUTER ENTERTAINMENT AMERICA LLC
Reel/Frame 035354/0237 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 6, 2012
From: INSOLVENCY SERVICES GROUP, INC.
To: OL2, INC.
Reel/Frame 028912/0053 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 29, 2012
From: ONLIVE, INC.
To: INSOLVENCY SERVICES GROUP, INC.
Reel/Frame 028884/0120 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 25, 2012
From: MAMTANI, VINOD; MCLARNON, BRETT; MARKELLO, JAY; HEATH, SCOTT
To: ONLIVE, INC.
Reel/Frame 027594/0137 →