throbber
as United States
`a2) Patent Application Publication co) Pub. No.: US 2002/0066022 A1
`
` Calderet al. (43) Pub. Date: May30, 2002
`
`
`US 20020066022A1
`
`(54) SYSTEM AND METHOD FOR SECURING AN
`APPLICATION FOR EXECUTION ON A
`COMPUTER
`
`(76)
`
`Inventors: Brad Calder, San Diego, CA (US);
`AndrewA. Chien, La Jolla, CA (US)
`
`Correspondence Address:
`KNOBBE MARTENS OLSON & BEAR LLP
`620 NEWPORT CENTER DRIVE
`SIXTEENTH FLOOR
`NEWPORT BEACH,CA 92660 (US)
`(21) Appl. No.:
`09/727,305
`a ,
`,
`(22)
`Filed:
`Nov. 29, 2000
`
`Publication Classification
`
`(SL)
`
`Tint, Ceeee cecceceseneeeeeseneteessennnnnenses GO6F 12/14
`
`(52) U.S. Cle vassssssssssnusstsinsesistvtntuetnseve 713/200
`
`(57)
`
`ABSTRACT
`
`A system for securing an application for execution in a
`computer. In one embodiment, a preprocessor module modi-
`fies an application binary such that the application invokes
`an interception module in response to invoking certain
`system calls. The interception module prevents the applica-
`tion from adversely affecting the operating of a computer
`that is executing the application. Furthermore, the intercep-
`tion module protects the contents of the application from
`improperaccess by a user of the computer. For example, the
`interception module transparently encrypts all files that are
`used by the application such that a user of the computer
`cannot improperly access thesefiles.
`
`BEGIN
`
`COMPILE SOURCE
`
`CODEINTO OBJECT CODE
`
`ENVIRONMENT
`
`
`PREPROCESSAPPLICATION PACKAGE FOR
`EXECUTIONIN THE SECURE CLIENT
`
`
`
` 2g
`
`APPLICATION MANAGER ON CLIENT RETRIEVES
`MODIFIED OBJECT CODE FROM SERVER
`
`
`
`INITIALIZE APPLICATION PACKAGE
`AND PATCHLIBRARIES
`
`
`Lo
`
`VIRTUALIZE INTERCEPTED CALLS
`DURING EXECUTION
`
`
`
`
`
`
`
`TRANSMIT RESULTS TO SERVER
`
`RETURN
`
`Google Exhibit 1006
`Google v. VirtaMove
`
`Google Exhibit 1006
`Google v. VirtaMove
`
`

`

`Patent Application Publication May 30,2002 Sheet 1 of 51
`
`US 2002/0066022 Al
`
` 415
`
`PREPROCESSING
`MODULE
`
`APPLICATION PACKAGE
`
`SERVER
`
`
`
`CLIENT
`
`CLIENT
`
`CLIENT
`
`
`
`FIG. 1
`
`

`

`Patent Application Publication May 30,2002 Sheet 2 of 51
`
`US 2002/0066022 Al
`
`210
`APPLICATION BINARY
`
`220
`LIBRARIES
`230
`CONFIGURATIONFILES
`
`240
`DATA FILES
`
`110
`
`PREPROCESSOR
`MODULE
`
`FILES
`
`
`215
`
`MODIFIED BINARIES
`225
`MODIFIED LIBRARIES
`235
`MODIFIED COKFIGURATION
`245
`MODIFIED DATA FILES
`
`erna
`'
`EXECUTION ENVIRONMENT
`|
`:
`INFORMATION
`111I
`!
`DIRECTORY STRUCTURES
`SECURITY INFORMATION
`J 260
`
`NEW — SYSTEM INFORMATION
`
`FIG. 2
`
`

`

`Patent Application Publication May 30,2002 Sheet 3 of 51
`
`US 2002/0066022 Al
`
`NORMAL EXECUTION
`
`APPLICATION
`
`310
`
`320
`
`ZL
`
`INTERFACE
`
`330
`
`360
`
`370
`
`380
`
`340
`
`350
`
`SYSTEM
`DLL's
`
`INTERFACES
`DEALLOCATION
`
`RESOURCE
`ALLOCATION
`AND
`
`REGISTRY
`
`FILE
`SYSTEM
`
`OTHER
`ENVIRONMENT
`
`NETWORK
`
`GRAPHICS
`
`OPERATING SYSTEM
`
`FIG. 3
`
`

`

`Patent Application Publication May 30,2002 Sheet 4 of 51
`
`US 2002/0066022 Al
`
`SECURE EXECUTION
`
`PREPROCESSED
`APPLICATION
`
`APPLICATION
`
`MANAGER
`
`/ 415
`
`(RESOURCES,FILES, DATA, NAMES
`
`INTERCEPTED|”4°
`SYSTEM CALLS
`430
`
`425
`
`450
`INTERFACES
`
`RESOURCE
`ALLOCATION
`AND
`DEALLOCATION
`
`VIRTUALIZED
`REGISTRY
`
`VIRTUALIZED
`FILE SYSTEM
`
`VIRTUALIZED
`NETWORK
`
`320
`SYSTEM
`INTERFACE
`
`435
`445
`440
`
`VIRTUALIZED
`VIRTUALIZED
`OTHER
`GRAPHICS
`ENVIRONMENT
`
` 340 350 y 360 370 380
`
`SYSTEM
`DLL's
`
`RESOURCE
`OTHER
`ALLOCATION
`NETWORK
`ENVIRONMENT
`REGISTRY
`AND
`BDEALLOCATION
`
`380
`
`
`
`
`
`
`
`INTERFACES
`
`GRAPHICS
`
`FIG. 4
`
`

`

`Patent Application Publication May 30,2002 Sheet 5 of 51
`
`US 2002/0066022 Al
`
`BEGIN
`
`510
`
`COMPILE SOURCE
`
`920
`
`CODE INTO OBJECT CODE
`ENVIRONMENT
`PREPROGESS APPLICATION PACKAGE FOR
`
`(A)
`
`EXECUTION IN THE SECURE CLIENT
`
`530
`
`APPLICATION MANAGER ON CLIENT RETRIEVES
`MODIFIED OBJECT CODE FROM SERVER
`
`AND PATCH LIBRARIES
`
`INITIALIZE APPLICATION PACKAGE
`
`550
`
`VIRTUALIZE INTERCEPTED CALLS
`
`DURING EXECUTION
`TRANSMIT RESULTS TO SERVER
`
`560
`
`RETURN
`
`FIG. 5
`
`

`

`Patent Application Publication May 30,2002 Sheet 6 of 51
`
`US 2002/0066022 Al
`
`520
`
`BEGIN
`
`610
`
`L 6
`
`REWRITE BINARIES
`
`20
`
`
`MODIFY AND ADD ADDITIONAL
`EXECUTION
`ENVIRONMENT INFORMATION
`
`
`OF PACKAGE
`
`630
`
`(D)
`
`ENCRYPTFILES
`
`640
`
`650
`
`OF APPLICATION PACKAGE
`ENCRYPT FILENAMES
`TABLE
`PACKAGE
`
`ENCRYPT FILENAMESIN IMPORT
`
`660
`
`Lx
`
`ENCRYPT AND SIGN APPLICATION
`
`RETURN
`
`FIG.6
`
`

`

`Patent Application Publication May 30,2002 Sheet 7 of 51
`
`US 2002/0066022 Al
`
`610
`
`SCAN FOR IMPROPER
`
`BEGIN
` A 710
`INSTRUCTIONS OR SEQUENCES
`
`
`
`IMPROPER
`REWRITE APPLICATION
`BINARY TO
`
`INSTRUCTIONS
`
`INTERCEPT IMPROPER
`AND SEQUENCES
`
`
`
`SEQUENCES
`IDENTIFIED?
`
`
`
`
`No
`
`740
`
`
`
`
`
`REWRITE IMPORT TABLE OF
`BINARIES TO ADD INTERCEPTION
`MODULE
`
`
`APPLICATION BINARY
` RETURN
`
`760
`
`
`
`STORE MODIFIED
`
`
`FIG. 7
`
`

`

`Patent Application Publication May 30,2002 Sheet 8 of 51
`
`US 2002/0066022 Al
`
`620
`
`BEGIN
`
`
`
`
`ADD INTERCEPTION
`MODULE TO APPLICATION
`PACKAGE
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`ADD SECURITY
`INFORMATION TO
`APPLICATION PACKAGE
`
`PROVIDE VIRTUAL
`ENVIRONMENTAL SETTINGS
`FOR SYSTEM DATABASE
`
`PROVIDE VIRTUAL SYSTEM
`MODULES TO ALLOW
`APPLICATION PACKAGE TO
`EXECUTE ON NON-NATIVE
`PLATFORMS
`
`
`
`REMOVE SELECTED FILES
`FROM APPLICATION
`PACKAGE
`
`
`
`OBFUSCATE DIRECTORY
`STRUCTURE
`
`FIG. 8
`
`

`

`Patent Application Publication May 30,2002 Sheet 9 of 51
`
`US 2002/0066022 Al
`
`(8) a
`
`BEGIN
`
`910
`
`
`
`APPLICATION MANAGER REQUESTS
`OPERATING SYSTEM TO EXECUTE
`APPLICATION PACKAGE
`
`920
`
`OPERATING SYSTEM LOADSALL LIBRARIES
`
`IDENTIFIED BY IMPORT TABLES INTO MEMORY
`
`
`
`OPERATING SYSTEM EXECUTES
`INITIALIZATION ROUTINE OF DEFAULT
`SYSTEM LIBRARIES
`
`940
`
`930
`
`OPERATING SYSTEM EXAMINES IMPORT
`
`950
`
`TABLE AND EXECUTESINITIALIZATION ROUTINE OF THE INTERCEPT MODULEFIRST
`PATCH LOADEDLIBRARIES
`
`
`INITIALIZE VIRTUAL SYSTEM DATABASE
`
`(s)
`
`(1)
`
`J 960
`MAKE ALL CODE PAGES EXECUTE ONLY AND
`REMOVE ALL EXECUTION PRIVILEGES FROM
`REMAINING PAGES
`
`970
`
`980
`
`START VIRTUAL MACHINE COMMUNICATION
`THREAD
`
`
`OPERATING SYSTEM EXECUTES
`INITIALIZATION ROUTINES OF OTHER
`
`LIBRARIES IN THE IMPORT TABLE
`
`FIG. 9
`
`

`

`Patent Application Publication
`
`May30, 2002 Sheet 10 of 51
`
`US 2002/0066022 Al
`
`950
`
`BEGIN
`
`
`
`ZL
`GREATE AN AVAILABLE LIST OF
`ROUTINES BASED UPON ALL
`SYSTEM ROUTINES LISTED BY
`THE EXPORT TABLE OF THE
`LIBRARY BEING PROCESSED
`
`1010
`
`
`
`1020
`
`
`CREATE A SHUTDOWNLIST BY
`DELETING FROM AVAILABLE LIST
`ALL SYSTEM ROUTINES
`MAINTAINED BY INTERCEPT
`MODULE
`
`1030
`
`
`
`INTERCEPT ROUTINESIN
`SHUTDOWNLIST SO THAT THEY
`
`
`INVOKE AN ERROR HANDLING
`ROUTINE
`
`1040
`
`Z
`
`INTERCEPT ALL ROUTINES
`IDENTIFIED BY VIRTUAL LIST
`
`1050
`
`
`
`
`
`
`
`
`
`
`
`
`ROUTINES IN MEDIATED LIST ARE
`NOT MODIFIED
`
`RETURN
`
`FIG. 10
`
`

`

`Patent Application Publication May 30, 2002 Sheet 11 of 51
`
`US 2002/0066022 Al
`
`1040
`
`BEGIN
`
`RETRIEVE START ADDRESS OF
`
`RETRIEVE START ADDRESS OF
`THE WRAPPER ROUTINE
`
`1110
`
`1120
`
`1130
`
`CREATE A DYNAMIG VERSION OF
`THE INTERCEPTED ROUTINE
`
`1140
`
`
`SET PAGE ATTRIBUTES OF
`DYNAMICALLY CREATED CODE TO
`EXECUTE ONLY
`
`1150
`
`ROUTINE TO BE INTERCEPTED
`
`
`
`
`
`
`
`REPLACE ORIGINAL ROUTINE
`WITH NO-OPS ENDING WITH
`ERROR CODE
`
`CHANGE ENTRY POINT OF
`INTERCEPTED ROUTINE TO
`DIRECTLY POINT TO WRAPPER
`ROUTINE
`
`4160
`
`1170
`
`MODIFY VARIABLE USED BY
`WRAPPER ROUTINE TO POINT TO
`DYNAMICALLY CREATED ROUTINE
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`RETURN
`
`FIG. 11
`
`

`

`BEGIN
`
`
`
`
`SHOULD
`APPLICATION
`CREATE NEW
`
`DATABASE?
`
`1220
`
`DOES VIRTUAL
`DATABASE EXIST?
`
`1240
`
`CREATE VIRTUAL
`DATABASE
`
`COPY PREDEFINED
`LIST NON-CHANGED
`KEYS FROM SYSTEM
`DATABASE TO
`VIRTUAL DATABASE
`
`READ PREDEFINED
`LIST OF MASKED
`KEYS FROM REAL
`SYSTEM DATABASE
`
`
`
`
`
`
`
`
`
`
`
`Patent Application Publication May 30,2002 Sheet 12 of 51
`
`US 2002/0066022 Al
`
`970
`
`1210
`
`OPEN VIRTUAL DATABASE
`
`
`MODULES
`
`COMPLETELY OR PARTIALLY
`CHANGE DATA USING PREDEFINED
`DATA FOR DATABASE TABLE
`MAINTAINED BY INTERCEPT
`
`
`
`
`WRITE THE NEW
`
`CHANGED DATA TO
`VIRTUAL DATABASE
`
`RETURN
`
`FIG. 12
`
`

`

`Patent Application Publication May 30, 2002 Sheet 13 of 51
`
`US 2002/0066022 Al
`
`550
`
`BEGIN
`
`
`
`
`
`LIBRARY
`NETWORK
`REQUEST
`REQUEST
`
`
`
`
`
`
`
` EXCEPTION
`THREAD QUERY
`
`
`
`
`
`
`
`
`RESOURCE
`REQUEST
`
`DATABASE
`
`
`
`SYSTEM
`
`GRAPHICS
`
`
` SHUTDOWN
`
`MACHINE
`SPECIFIC
`INFORMATION
`
`1360
`
`PROCESS
`CREATE AND
`TERMINATE
`
`RAISE AN ERROR
`
`IDENTIFYING
`
`WHICH ROUTINE
`{S CALLED
`
`1325
`
`MODIFY PAGE
`PERMISSIONS
`
`FIG. 13
`
`

`

`Patent Application Publication May 30, 2002 Sheet 14 of 51
`
`US 2002/0066022 Al
`
`BEGIN
`
`1405
`
`1410
`
`OPEN
`
`IDENTIFY TYPE OF
`FILE SYSTEM
`REQUEST
`
`
`
`1415
`
`1420
`
`READ OR
`WRITE
`
`MAPFILE TO
`MEMORY
`
`1430
`
`
`
` 1S FILE
`TO BE OPENEDIN
`A PRE-DEFINED
`
`
`LIST?
`
`
`
`
`No
`
`1445
`
`
`
`IS FILE TO BE
`OPENEDIN
`SANDBOX
`DIRECTORY?
`
`
`
`
`No
`
`PR)
`sa
`
`DO NOT
`
`MODIFY CALL
`
`(S)
`
`ROUTINES
`THAT RETURN
`
`UNMAPFILE (v)
`
`FROM
`MEMORY
`
`ENCRYPT
`
`FILENAME
`
`Yes
`
`Yes
`
`1450
`
`CREATE VIRTUAL AND
`DOES FILE
`ENCRYPTED FILENAME TO
`
`EXIST AND DOES
`REMOVE
`
`
`
`iT CONTAIN
`WRITE
`
`
`
`EXECUTABLE
`PRIVILEGES
`
`
`
`CODE?
`FROM OPEN
`
`
`COMMAND
`
`A FILENAME
`
`
`
`
`
`REDIRECT IT TO SANDBOX
`1455
`DOES
`
`DIRECTORY
`
`
`IN FILENAME EXIST
`IN VIRTUAL ROOT,
`
`TREE?
`
`
`
`CREATE
`DIRECTORIES IN
`VIRTUAL TREE
`
`
`
`FIG. 14
`
`CALL ORIGINAL
`OPEN AND RETURN
`HANDLE
`
`RETURN
`
`
`
`

`

`Patent Application Publication May 30,2002 Sheet 15 of 51
`
`US 2002/0066022 Al
`
`BEGIN
`
`
`1510
`
`IS EXCEPTION AN
`
`ACCESS VIOLATION AND
`
`
`FALLING WITHIN ONE OF
`
`
`MEMORY MAPPED
`VIRTUAL BUFFERS?
`
`
`
`1550
`
`
`
`
`PASS ON EXCEPTION
`
`
`
`TO THE VIRTUAL BUFFER
`
`
`
`
`
`DECRYPT BLOCK FROM
`
`REAL BUFFER COPYINGIT
`
`
`
`
` MODIFY VIRTUAL MEMORY
`BLOCK PROTECTION FLAG
`
`TO BE ACCESSIBLE
`
`
`
`RETURN
`
`FIG. 15
`
`1560
`
`IF EXCEPTION IS NOT
`
`HANDLED BY THE
`
`APPLICATION, THEN NOTIFY
`
`AVIRTUAL MACHINE THREAD
`

`
`
`
`
`IDENTIFY BLOCK
`CORRESPONDING TO
`ADDRESS CAUSING
`EXCEPTION
`
`
`

`

`Patent Application Publication May 30, 2002 Sheet 16 of 51
`
`US 2002/0066022 Al
`
`BEGIN
`
`1610
`
`(Vv)
`
`1620
`
`Yes
`
`1650
`
`(K)
`
`CHECK FOR IMPROPER
`
`SEQUENCES
`
`INSTRUCTION
`
`1640
`
`(mP)
`
`ENCRYPT FILENAME
`
`LOADED
`
`LOAD LIBRARY "NAME" INTO
`MEMORYIF NOT ALREADY
`
`1630
`
`
`HAS FILE BEEN
`MODIFIED?
`
`RECURSIVELY LOAD ALL
`LIBRARIES THAT SELECTED
`
`LIBRARY DEPENDS UPONIN
`
`ITS IMPORT TABLE LIST INTO
`MEMORYIF NOT ALREADY
`
`LOADED
` PATCH LOADED
`
`LIBRARIES
`
`MAKE CODE PAGES
`EXECUTE ONLY AND
`REMOVE ALL EXECUTION
`PRIVILEGES FROM
`REMAINING NEW PAGES
`
`1665
`
`1670
`
`EXECUTE DLLINITIALIZATION
`OF ALL LOADED LIBRARIES
`
`
`
`END
`
`FIG. 16
`
`

`

`Patent Application Publication May 30, 2002 Sheet 17 of 51
`
`US 2002/0066022 Al
`
`(we)
`
`CHECK FILE FOR IMPROPER
`INSTRUCTION SEQUENCES
`
`INTERCEPT IMPROPER
`
`SEQUENCES THAT WERE FOUND
`
`
`
`
`
`
`THAT IT CANNOT BE EXECUTED
`
`VIRTUAL MEMORY SPACE
`ALLOCATED CONTAINING THOSE
`IMPROPER SEQUENCES NOT
`INTERCEPTED WILL BE SET SUCH
`
`Yes
`
`WERE THERE
`
`
`ANY IMPROPER
`SEQUENCES OF
`INSTRUCTION NOT
`INTERCEPTED?
`
`1730
`
`No
`
`FIG. 17
`
`

`

`Patent Application Publication May 30,2002 Sheet 18 of 51
`
`US 2002/0066022 Al
`
`1815
`1825
`
`N
`
`ACCEPT
`
`SEND TO
`
`RECEIVE
`FROM
`
`SOCKET
`
`1805
`
`
`
`
`
`
` 1840
`
`
`
`
`
`1820
`
`1830
`
`SELECT
`
`1850 .
`
`|se
`
`
`
`1860
`
`1870
`
`LISTEN
`
`UPDATE
`
`FIG. 18
`
`

`

`Patent Application Publication May 30,2002 Sheet 19 of 51
`
`US 2002/0066022 Al
`
`ACCEPT
`
`BEGIN
`
` 1905
`
`IS
`
`ADDRESS
`
`IN APPROVED
`
`LIST?
`
`1945
`
`RAISE VIRTUAL
`
`MACHINE
`ERROR
`
`
`1910
`
`IS
`
`SOCKET
`IN TABLE?
`
`RETURN LOW
`LEVEL ERROR
`
`1915
`Is
`
`
`STATUS
`
`
`
`FLAG VALID FOR
`ACCEPT?
`
`No
`
`
`
`
`
`SOCKET TABLE
`
`
`
`
`
`ENQUEUE MESSAGE FOR PROXY
`
`SENDING BACK LOCAL SOCKET
`STRUCTURE TO REMOTE PROXY
`
`
`
`
`|S THERE
`
`
`1S OPTION
`AN ENTRY IN
`
`
`CONNECTION
`BLOCKING?
`
`
`
`QUEUE?
`
`
`CREATE NEWENTRYIN
`
`RETURN EMPTY
`
`QUEUE STATUS
`
`
`INITIALIZE SOCKET STRUCTURE
`
`(LOCAL) WITH INPUT PARAMETERS
`TO ACCEPT
`
`REMOVE ENTRY FROM CONNECT
`QUEUE AND INITIALIZE OPTIONS
`AND REMOTE SOCKET STRUCTURE
`FROM ENTRY
`
`RETURN
`
`FIG. 19
`
`

`

`Patent Application Publication May 30,2002 Sheet 20 of 51
`
`US 2002/0066022 Al
`
`BBB
`
`SEND
`
`
`
`RETURN LOW LEVEL
`ERROR
`
`Is
`
`SOCKET
`IN TABLE?
`
`Yes
`
`BEGIN
` 2050
`
`
`
`IS
`
`STATUS
`
`
`VALID FOR
`SEND?
`
`
`
`
`RETURN LOW LEVEL
`
`ERROR
`
`
`WRITE BUFFER INTO SEND QUEUE
`
`NOTIFY PROXY
`
`
`
`
`
`
`RETURN
`
`
`
`FIG. 20
`
`

`

`Patent Application Publication May 30,2002 Sheet 21 of 51
`
`US 2002/0066022 Al
`
`SEND TO
`
`2110
`
`{S
`
`DESTINATION
`
`ADDRESS
`VALID?
`
`IS
`
`SOCKETID
`
`
`BEGIN
`
`IN TABLE?
`
`IS
`
`STATUS
`
`
`VALID FOR
`
`SEND?
`
`Yes
`2140
`
`UPDATE REMOTE SOCKET STRUCTURE IN
`
`
`SOCKET TABLE
` WRITE BUFFER INTO SEND QUEUE NOTIFY
`
`
`
`PROXY
`
`RETURN
`
`
`FIG. 21
`
`2170
`
`RETURN
`ERROR
`
`
`
`

`

`Patent Application Publication May 30,2002 Sheet 22 of 51
`
`US 2002/0066022 Al
`
`(000)
`
`RECEIVE
`BEGIN
`
`{S$ SOCKET
`IN TABLE?
`
`2210
`
`RETURN
`ERROR
`
`[S
`
`THERE AN
`
`
`
`IS STATUS
`RETURN
`ENTRY IN RECEIVE
`
`
`
`BLOCKING?
`STATUS
`QUEUE?
`
`
`2220
`IS
`
`
`RECEIVE
`
`RETURN
`
`VALID GIVEN
`ERROR[*“N°
`CURRENT
`
`STATUS?
`
`
`
`
`
`
`
`
`COPY INTO BUFFER UP TO
`AMOUNTSPECIFIED TO
`RECEIVE
`
`REMOVE CONSUMABLE
`
`ENTRIES FROM RECEIVE
`QUEUE
`
`RETURN NUMBER OF BYTES
`COPIED
`
`
`
`FIG. 22
`
`

`

`Patent Application Publication May 30,2002 Sheet 23 of 51
`
`US 2002/0066022 Al
`
`RECEIVE
`FROM
`
`BEGIN
`
`2310
`
`2320
`
`RETURN
`ERROR
`
`[7°
`
`
`
`IS
`
`
`RECEIVE
`
`
`VALID GIVEN
`
`
`1S SOCKET
`IN TABLE?
`
`ZzoO
`
`RETURN
`ERROR
`
`
`
`
`IS
`
`THERE AN
`
`ENTRY IN RECEIVE
`
`QUEUE?
`
`
`
`IS STATUS
`RETURN
`
`STATUS
`
`BLOCKING?
`
`
`
`
`COPY INTO BUFFER UP TO
`AMOUNT SPECIFIED TO
`RECEIVE
`
`REMOVE CONSUMABLE
`ENTRIES FROM RECEIVE
`QUEUE
`
`LOOKUP THE REMOTE
`
`
`ADDRESS AND UPDATE THE
`ARGUMENTS
`
`
`
`
`
`
`
`RETURN NUMBER OF BYTES
`COPIED
`
`FIG, 23
`
`

`

`Patent Application Publication May 30,2002 Sheet 24 of 51
`
`US 2002/0066022 Al
`
`CLOSE
`
`BEGIN
`
`
`
`
`
`
`
`2460
`
`
`RETURN LOW LEVEL
`
`ERROR
`
`
`2450
`
`
`
`RETURN LOW LEVEL
`ERROR
`
`
`
`
` IS
`SOCKET
`IN TABLE?
`
`Yes
`
`IS STATUS
`
`VALID FOR
`
`TERMINATION?
`
`Yes
`{
`
`2430
`
`SET STATUS AS "TERMINATE" FOR
`TABLE ENTRY
`
`NOTIFY PROXY
`
`RETURN
`
`
`
`FIG. 24
`
`

`

`Patent Application Publication May 30,2002 Sheet 25 of 51
`
`US 2002/0066022 Al
`
`SHUTDOWN
`
`BEGIN
`
`2520
`
`
`2530
`
`Yes
`
`[S SOCKET
`IN TABLE?
`
`RETURN LOW
`LEVEL ERROR
`
`2540
`RETURN
`
`ERROR
`
`LeveL
`
`Ni
`

`
`IS STATUS
`
`VALID FOR
`
`SHUTDOWN?
`
`Yes
`
`2550
`
`CHANGE STATUS TO BE
`
`SHUTDOWN
`
`2560
`
`Lo
`
`NOTIFY PROXY
`
`RETURN
`
`FIG, 25
`
`

`

`Patent Application Publication May30, 2002 Sheet 26 of 51
`
`US 2002/0066022 Al
`
`SELECT
`
`2610
`
`SL
`
`WAIT FOR SPECIFIED DELAY TIME
`TO EXPIRE
`
`GIVEN LIST(S) OF SOCKETS, FIND
`ALL SOCKET MEETING A GIVEN
`CONDITION
`
`2620
`
`2630
`
`BEGIN
`
`
`
`
`
`MODIFY SOCKET LIST BASED ON
`QUERY
`
`2640
`
`Zz
`
`RETURN NUMBER OF SOCKETS
`THAT MEET CONDITION
`
`FIG. 26
`
`

`

`Patent Application Publication May 30,2002 Sheet 27 of 51
`
`US 2002/0066022 Al
`
`1845
`
`SOCKET
`
`BEGIN
`
`
`2710
`
`2720
`
`CREATE NEW ENTRYIN
`SOCKET TABLE AND
`INITIALIZE ENTRY
`
`RETURN UNIQUE
`SOCKETID
`
`FIG. 27
`
`

`

`Patent Application Publication May 30,2002 Sheet 28 of 51
`
`US 2002/0066022 Al
`
`BIND
`
` IS
`NETWORK
`ADDRESS
`IN APPROVED
`LIST?
`
`
`RAISE VIRTUAL
`
`
`MACHINE
`
`
`ERROR
`
`
`BEGIN
` 2850
`
`
`
`SOCKET STRUCTURE
` RETURN
`
`IS SOCKET
`IN TABLE?
`
`RETURN LOW
`LEVEL ERROR
`
`STORE THE PASSED
`
`NETWORK ADDRESSIN
`
`FIG. 28
`
`

`

`Patent Application Publication May 30,2002 Sheet 29 of 51
`
`US 2002/0066022 Al
`
`CONNECT
`
`2910
` IS ADDRESS
`IN APPROVED
`No
`LIST?
`
`2960
`
`RAISE VIRTUAL
`MACHINE
`
`ERROR
`
`BEGIN
`
`
`
`
`
`2930
`
`
`Yes
`
`IS SOCKET
`IN TABLE?
`
`Yes
`
`iS STATUS
`FLAG
`VALID FOR
`CONNECT?
`
`Yes
`_¥.
`
`2940
`
`UPDATE STATUS FLAG ENTRY TO
`BE CONNECTING
`
`2970
`
`
`
`RETURN LOW
`LEVEL ERROR
`
`
`
`2930
`
`No.
`RETURN LOW
`LEVEL ERROR
`
`
`
`
`
`
`
`
`NOTIFY PROXY
`
`RETURN
`
`FIG. 29
`
`

`

`Patent Application Publication May 30,2002 Sheet 30 of 51
`
`US 2002/0066022 Al
`
`LISTEN
`
`BEGIN
`
`3040
`
`
`RETURN LOW
`
`LEVEL ERROR
`
`
`
`
`RETURN LOW
`LEVEL ERROR
`
`
`
`
`
`
`IS SOCKET
`IN TABLE?
`
`Yes
`
`3020
`
`
`
`IS STATUS
`FLAG VALID
`FOR LISTEN?
`
`
`
`UPDATE STATUS FLAG TO LISTEN
`AND INITIALIZE CONNECTION
`QUEUE
`
`
`
`RETURN
`
`FIG. 30
`
`

`

`Patent Application Publication May 30,2002 Sheet 31 of 51
`
`US 2002/0066022 Al
`
`QUERY
`
`BEGIN
`
`
`
`
`
` IS SOCKET IN
`
`RETURN LOW
`
`LEVEL ERROR
`SOCKET TABLE?
`
`
`RETRIEVE ENTRY FROM TABLE
`AND RETURN DATA
`
`FIG. 31
`
`

`

`Patent Application Publication May 30,2002 Sheet 32 of 51
`
`US 2002/0066022 Al
`
`UPDATE
`
`3230
`
` IS SOCKETID
`
`RETURN LOW LEVEL
`ERROR
`
`IN TABLE?
`
`BEGIN
`
`
`
`UPDATE STATUS OF CONDITIONS
`OR FLAGS
`
`RETURN
`
`
`
`FIG. 32
`
`

`

`Patent Application Publication May 30,2002 Sheet 33 of 51
`
`US 2002/0066022 Al
`
`4 3310
`REFUSE TO MAKE PAGE
`WITH EXECUTION
`
`PRIVILEGES READABLE
`PRIVILEGES WRITEABLE
`
`3320
`
`REFUSE TO MAKE PAGE
`WITH EXECUTION
`
`3330
`
`IS
`
`
`ATTEMPT
`
`
`TO MAKE PAGE
`
`
`EXECUTABLE?
`
`
`
`
`Yes
`
`CHECK PAGE FOR
`IMPROPER
`INSTRUCTION
`SEQUENCES
`
`INTERCEPT IMPROPER
`SEQUENCES FOUND
`
`3380
`
`REFUSE TO MAKE PAGES
`CONTAINING THESE
`REMAINING NOT
`INTERCEPTED IMPROPER
`SEQUENCES EXECUTABLE
`
`3360
`WERE
`
`
`THERE ANY
`
`
`IMPROPER SEQUENCES
`
`
`OF INSTRUCTIONS NOT,
`
`
`
`
`
`
`
`
` Yes
`
`
`INTERCEPTED? No
`
`
`
`
`3370
`
`MAKE PAGES WITH NO IMPROPER
`SEQUENCES OR ONESWITH ALL
`IMPROPER SEQUENCES
`INTERCEPTED AS EXECUTABLE
`
`END
`
`FIG. 33
`
`3340
`
`3350
`
`No —+
`
`
`
`

`

`Patent Application Publication May 30,2002 Sheet 34 of 51
`
`US 2002/0066022 Al
`
`BEGIN
`
`3430
`
`CREATE A
`MODAL
`DIALOG BOX
`
`CALLA
`
`WINDOW
`
`
`
`
`3435
`
`DO NOT CREATE
`MODAL DIALOG BOX.
`INSTEAD RETURN A
`RESULT MOST
`LIKELY TO
`CONTINUE
`EXECUTION
`
`3460
`
`SET WINDOW
`PROPERTIES
`
`3445
`
`
`
`
`
`
`
`
`
`
`
` BEFORE CALLING
`THE REAL
`OPERATING
`SYSTEM ROUTINE,
`REMOVE THE
`WINDOW STYLES
`THAT:
`*
`SHOW IT

`MAKEIT VISIBLE

`ACTIVATE IT
`
`
`«MAKE IT THE
`
`
`FOCUS
`
`
`ETC.
`
`
`
`
`MESSAGES
`
`
`
`THREAD
`
`3415
`3405
`
`
`ROUTINES THAT
`DIRECTLY:
`
`« SHOW WINDOW OR
`MAKEIT VISIBLE
`* ACTIVATE
`s DRAW
`* DISPLAY
`* CHANGE FOCUS
`* PAINT, ETC.
`‘
`DISABLE ASPECTS OF
`ROUTINE THAT AFFECT
`ISIBLE ASPECT OF
`GRAPHICAL USER
`INTERFACE
`
`
`
`CREATE
`WINDOW OR
`
`
`NORMALDIALOG
`BOX CREATION
`
`
`
`
`
`
`
`SET STYLE OF
`WINDOW TO
`
`
`"HIDE" OR
`
`"INVISIBLE"
`
`
`CALL THE
`ORIGINAL
`CREATE
`ROUTINE
`
`
`
`
`
`SEND MESSAGES
`
` COMMUNICATE
`AND SET WINDOW
`DIALOG MESSAGE
`PROPERTIES TO
`
`
`TO VM
`WINDOWSNOTIN
`COMMUNICATION
`APPLICATION
`PACKAGE ARE
`DISABLED
`
`
`
`
`
`
`
`
`
`
`RETURN
`
`FIG. 34
`
`

`

`Patent Application Publication May 30,2002 Sheet 35 of 51
`
`US 2002/0066022 Al
`
`
`
`SAVE KEY
`
`
`3550
`
`3560
`
`
`RESTORE
`KEY
`
`3555
`
`@)
`
`OPEN KEY
`
`(Ww)
`
`BEGIN
`
`3505
`
`3520
`
`3535)
`
`3545
`
`QUERY
`VALUE
`
`DELETE
`VALUE
`
`QUERY KEY
`
`3510
`
`3540
`3530
`
`
`CLOSE KEY
`
`x)
`
`SET VALUE
`
`CREATE KEY
`
`:
`-
`
`3515
`
`DELETE KEY
`
`3525
`
`UPDATE KEY
`
`FIG. 35
`
`REPLACE
`KEY
`
`

`

`Patent Application Publication May 30,2002 Sheet 36 of 51
`
`US 2002/0066022 Al
`
`OPEN KEY
`
`BEGIN
`
`3605
`
`LOOKIN VIRTUAL
`
`
`iS KEY IN
`VIRTUAL
`DATABASE?
`
`
`
`IS KEY INA
`
`
`OPEN KEY IN REAL
`PREDEFINED
`
`
`
`DATABASE
`ALLOWABLELIST?
`
`
`
`LOOK UP KEY IN
`PREDEFINED RUN-TIME
`
`CHANGE LIST
`
`INSERT FAKE KEY, VALUE,
`
`AND DATA IN VIRTUAL
`DATABASE
`
`
`DATABASE FOR KEY
`
`
`
`
`
`CHANGE ALL VALUES IN
`
`
`PREDEFINED LIST ALLOCATE A HANDLEIN
`
`
`VIRTUAL DATABASE
`
`
`
`
`
`
`
`WRITE KEY WITH ALL NEW
`
`AND UNCHANGED VALUES
`
`AND DATA TO VIRTUAL
`
`DATABASE
`
`
`3630
`
`
`
`
`RETURN HANDLE
`
`RETURN
`
`FIG, 36
`
`

`

`Patent Application Publication May 30,2002 Sheet 37 of 51
`
`US 2002/0066022 Al
`
`CLOSE KEY
`
`IS KEY ALLOCATED
`IN VIRTUAL DATABASE?
`
`REMOVE KEY FROM
`ALLOCATED LIST
`
`BEGIN
`RETURN SUCCESS
`
`
`RETURN ERROR
`
`RETURN
`
`FIG. 37
`
`

`

`Patent Application Publication May 30,2002 Sheet 38 of 51
`
`US 2002/0066022 Al
`
`QUERY SYSTEM USING FILE
`HANDLE TO GET FILENAME
`
`1S FILE
`READ OR WRITE
`FILE
`ENCRYPTED?
`
`BEGIN
`
`
`
`
`No
`
`(WRITE REQUEST)
`
`
`
`iS
`READ AND
`
`
`
`READ
`DECRYPTFILE
`
`
`BUFFER
`REQUEST?
`
`
`
`3860
`
`ENCRYPT AND WRITE
`FILE BUFFER
`
`
`
`RETURN
`
`FIG. 38
`
`

`

`Patent Application Publication May30, 2002 Sheet 39 of 51.
`
`US 2002/0066022 Al
`
`3910
`
`IDENTIFY ENCRYPTED
`BLOCKS CONTAINING
`REQUESTED DATA
`
`
`
`3920
`
`
`
`3930
`
`READ ENCRYPTED
`BLOCKS FROM FILE
`SYSTEM INTO A
`TEMPORARY BUFFER
`
`BEGIN
`
`
`
`
`
`
`
`DECRYPT CONTENTS OF
`TEMPORARY BUFFER
`
`3940
`
`
`COPY DECRYPTED
`ADDRESS RANGE INTO
`ORIGINAL BUFFER
`
`RETURN
`
`FIG. 39
`
`

`

`Patent Application Publication May30, 2002 Sheet 40 of 51
`
`US 2002/0066022 Al
`
`BEGIN
`
`4010
`
`IDENTIFY ADDRESS RANGE
`TO BE WRITTEN TO
`
`READ ENCRYPTED BLOCKS CONTAINING
`CORRESPONDING ADDRESS RANGE
`FROM FILE SYSTEM INTO A TEMPORARY
`BUFFER
`
`
`
`
`
`
`
`
`DECRYPT CONTENTS OF
`TEMPORARY BUFFER
`
`COPY STORED BUFFER
`INTO TEMPORARY BUFFER
`
`4040
`
`4050
`
`ENCRYPT TEMPORARY
`BUFFER
`
`4060
`
`WRITE BUFFER TO DISK
`
`
`
`
`
`RETURN
`
`
`
`FIG. 40
`
`

`

`Patent Application Publication May 30,2002 Sheet 41 of 51
`
`US 2002/0066022 Al
`
`BEGIN
`
`4110
`
`LOAD AND MAPFILE INTO
`
`MEMORY
`
`4130
`
`CHECK FOR IMPROPER
`
`(m)
`
`INSTRUCTION SEQUENCES
`
`4120
`
`
`
`
`
`ENCRYPTED?
`RESOURCES
`BUFFER, SIZE AND HANDLE
`RETURN POINTER TO REAL BUFFER
`
`HAS FILE BEEN
`MODIFIED?
`
`ves
`
`No:
`
`4140
`
` IS FILE
`
`Yes
`
`4150
`
`No
`
`RESERVE A REGION WITHOUT
`ALLOCATING PHYSICAL
`
`4150
`
`STORE IN MEMORY MAPPED
`TABLE A POINTER TO VIRTUAL
`BUFFER, POINTER TO REAL
`
`4170
`
`RETURN POINTER TO VIRTUAL
`ADDRESS BUFFER
`
`#180
`
`RETURN
`
`FIG. 41
`
`

`

`Patent Application Publication May 30,2002 Sheet 42 of 51
`
`US 2002/0066022 Al
`
`BEGIN
`
`4210
`
`LOAD AND MAP FILE
`INTO MEMORY
`
`IS FILE
`ENCRYPTED?
`
`Yes
`
`4230
`
`Lf
`
`ALTERNATETO FIG.41)
`
`
`
`
`
`
`CREATE A VIRTUAL BUFFER
`CONTAINING DECRYPTED
`DATA FROM REAL BUFFER
`
`4240
`
`RETURN POINTER TO
`VIRTUAL BUFFER
`
`RETURN
`
`FIG. 42
`
`REAL BUFFER
`
`RETURN POINTER TO
`
`

`

`Patent Application Publication May 30,2002 Sheet 43 of 51
`
`US 2002/0066022 Al
`
`BEGIN
`
`
`
`IS BUFFER REAL
`BUFFER OR
`VIRTUAL?
`
`4310
`
`IDENTIFY WHICH PORTIONS
`OF BUFFER HAVE BEEN
`MODIFIED
`
`
`
`
`
`
`ENCRYPT IDENTIFIED
`PORTIONS OF MEMORYINTO
`REAL BUFFER
`
`CALL OPERATING SYSTEM
`WITH REAL BUFFER
`
`RETURN
`
`FIG. 43
`
`

`

`Patent Application Publication May 30,2002 Sheet 44 of 51
`
`US 2002/0066022 Al
`
`BEGIN
`
`EXECUTE REQUESTED
`ROUTINE
`
`4410
`
`4420
`
`DECRYPT EACH OF THE
`RETURNED FILENAMES
`
`
`
`RETURN
`
`FIG. 44
`
`

`

`Patent Application Publication May30, 2002 Sheet 45 of 51.
`
`US 2002/0066022 Al
`
`BEGIN
` 4500
`
`
`IS FILE
`LOCATED IN NON-
`ENCRYPTED
`DIRECTORY?
`
`4510
`
`IDENTIFY ENCRYPTED
`PORTIONS OF PATHNAME
`USING PREFIX AND
`POSTFIX SYMBOLS
`
`4520
`
`
`
`DECRYPT THE ENCRYPTED
`PART OF THE PATHNAME
`
`
`
`
`4530
`
`ENCRYPT THE FULL
`PATHNAME
`
`RETURN
`
`
`
`FIG. 45
`
`

`

`Patent Application Publication May 30,2002 Sheet 46 of 51
`
`US 2002/0066022 Al
`
`TRADITIONAL
`SYTEM LAYOUT
`
`EXEFILE
`
`APP DIR ~—————__ DATAFILE
`
`APP WORKSPACE
`
`LIBRARY
`
`C:-——_ SYSTEM FILES
`
`TMP
`
`FIG. 46
`
`

`

`Patent Application Publication May 30,2002 Sheet 47 of 51
`
`US 2002/0066022 Al
`
`VIRTUALIZED
`SYTEM LAYOUT
`
`APP DIR7. DATA FILE
`
`UZ EXE FILE
`a oN LIBRARY
`
`APPWORKSPACE a ci—— Twp
`SANDBOX a D2
`77 LAYER
`VIRTUAL ROOT
`oN SYSTEMFILE
`
`C:
`
`FIG. 47
`
`

`

`Patent Application Publication
`
`May30, 2002 Sheet 48 of 51
`
`US 2002/0066022 Al
`
`
`
`NOLLOSNNOOAAgO3Y1300813008renSSNS,
`
`
`
`
`
`
`
`anandanandSNOLLdOSNSaaooeLos-Wo07
`
`
`
`
`
`cesr8cerVoorOzerOber~olerpose
`
`
`
`a1av1La4008
`
`008b
`
`
`
`ONIAIZOSY-AdALLHMOOS-
`
`
`
`ONIGNAS-$1090.LONd-
`
`QS.LO3NNOOSIq-
`
`CS.LOSNNOO-
`
`ONINSLSIT-
`
`OALYNIAMSL-
`
`NMOGLNHS-
`
`ONILOANNODO~GNNOd-
`
`8Sls
`
`
`
`SASSSYCdVHYOMLAN~
`
`SNOILdO-
`
`ONIMDOTE-
`
`INAAA
`
`AlIWVd>
`
`
`
`
`
`
`
`GSLOANNOONN-)SnLivlsLaxd0SGILSYDOSANDINN-|SyunLlonYlsLaWoos
`
`
`
`
`
`
`

`

`Patent Application Publication May 30,2002 Sheet 49 of 51
`
`US 2002/0066022 Al
`
`
`SEND CREATE OR
`TERMINATE
`1S EVENT
`
`
`
`MESSAGE TO
`PROCESS
`
`
`
`APPLICATION
`CREATE OR
`
`
`
`
`ERMINATE?
`MANAGER WITH
`
`
`PROCESSID
`
`
`
`
`SEND ERROR OR
`{S EVENT
`
`
`MESSAGE TO
`AN ERROR
`
`
`OR DIALOG
`APPLICATION
`
`
`
`MANAGER
`MESSAGE?
`
`
`
`
`IS EVENT
`
`FROM
`
`Yes:
`APPLICATION
`
`MANAGER?
`
`
`PROCESS
`APPLICATION
`
`
`
`1S EVENT
`FROM
`
`APPLICATION?
`
`PROCESS
`
`
`
`MANAGER EVENT
`
` APPLICATION EVENT
`APPLICATION MANAGER
`
`
`
`UNKNOWN EVENT
`SEND ERROR TO
`
`FIG. 49
`
`

`

`Patent Application Publication
`
`May30, 2002 Sheet 50 of 51
`
`US 2002/0066022 Al
`
`(BEGIN
`
`
`
`MAKELIST OF
`CALL RESUME THREAD
`
`
`ALL THREADSIN
`ON ALL THREADSIN
`
`
`PROCESS
`SUSPENDLIST
`
`
`
`5040
`
`CHECKPOINT
`
`5030
`
`
`
`DOES
`
`
`APPLICATION HAVE A
`"CHECKPOINT"
`
`ROUTINE?
`
`No —74
`
`
`
`
`
`
`
`
`
`CALL CHECKPOINT
`ROUTINE IN
`APPLICATION
`
`
`5035
`
`
`
`
`
`, 5045
`
`
`
`
`REMOVE FROMLIST
`VM THREADS
`
`
`
`
`REMOVE THREAD
`
`FROM SUSPENDLIST
`ONCEIT IS RESUMED
`
`
`
`
`
`SUSPEND ALL
`
`
`THREADS REMAINING
`
`IN THIS "SUSPEND"
`
`LIST
`
`6015
`
`STORE THE LIST OF
`
`SUSPENDED THREADS
`
`
`5020
`
` $025
`
`
`RETURN SUCCESSOR FAILURE
`
`EVENT TO APPLICATION MANAGER
`
`
`END
`
`FIG. 50
`
`

`

`Patent Application Publication May 30,2002 Sheet 51 of 51
`
`US 2002/0066022 Al
`
`
`
`BEGIN
`
`
`RESULTFILE
`COMPLETION PROGRESS
`
`
`
`
`5105
`
`
`SEND PROGRESS
`
`STATISTICS TO
`
`SEND FINISHED RESULT
`APPLICATION MANAGER
`
`FILENAME AND LOCATION
`TO APPLICATION MANAGER
`
`5115
`
`FIG. 54
`
`

`

`US 2002/0066022 A1
`
`May30, 2002
`
`SYSTEM AND METHOD FOR SECURING AN
`APPLICATION FOR EXECUTION ON A
`COMPUTER
`
`RELATED APPLICATIONS
`
`[0001] This application relates to the following co-owned
`and co-pending U.S. Patent Applications, which are each
`incorporated by reference herein in their entirety: U.S.
`
`patent application Ser. No.
`, “METHOD AND PRO-
`CESS FOR SECURING AN APPLICATION PROGRAM
`TO EXECUTE IN A REMOTE ENVIRONMENT”,filed
`Nov. 29, 2000; U.S. patent application Ser. No.
`“METHOD AND PROCESS FOR THE REWRITINGOFOF
`BINARIES TO INTERCEPT SYSTEM CALLS IN A
`SECURE EXECUTION ENVIRONMENT”, filed Nov. 29,
`
`2000; U.S. patent application Ser. No.
`, “METHOD
`AND PROCESS FOR VIRTUALIZING FILE SYSTEM
`INTERFACES”,filed Nov. 29, 2000; U.S. patent application
`
`Ser. No.
`» “METHOD AND PROCESS FOR THE
`VIRTUALIZATION OF SYSTEM DATABASES AND
`STORED INFORMATION”,
`filed Nov. 29, 2000; U.S.
`
`patent application Ser. No.
`, “METHOD ANDPRO-
`CESS FOR VIRTUALIZING NETWORKINTERFACES”,
`filed Nov. 29, 2000; U.S. patent application Ser. No.
`“METHOD AND PROCESS FOR VIRTUALIZINGUSERUSER
`INTLERIACLS”,filed Nov. 29, 2000; and U-S. patent appli-
`
`cation Ser. No.
`, “SYSTEM AND METHOD FOR
`COMMUNICATING AND
`CONTROLLING
`THE
`BEHAVIOR OF AN APPLICATION EXECUTING ON A
`COMPUTER’,filed Nov. 29, 2000.
`
`FIELD OF THE INVENTION
`
`[0002] The inventionrelates to distributed computing, and
`more particularly, relates to secure peer-to-peer Internet or
`enterprise distributed computing. The invention also relates
`to the secure execution of an application on a client com-
`puter.
`
`DESCRIPTION OF THE RELATED
`TECIINOLOGY
`
`[0003] Distributed computing systemsoffer a wide variety
`of resources that can be harnessed and collected so as to
`work toward a common goal. Until recently, distributed
`computing has been performed predominantly on sccure
`networks, wherein each of the computers in the network are
`owned by a single entity, such as a business. However,
`recently some individuals have attempted to implement
`distributed computing systems across the Internet, which
`includes millions of heterogeneous and non-secure comput-
`ers. An example of the is the GIMPS project that utilizes
`various computers that are provided by homeowners, busi-
`nesses, and universities to search for new Mersenne primes
`(primes of the form 2?-1).
`
`[0004] Althoughutilizing the Internet for distributed com-
`puting has met with limited success for certain projects, lack
`of security on the Internet makes it difficult to utilize the
`Internet for other types of projects. For example, many
`projects are of a confidential nature. Thus, project owners
`may be reluctant to utilize the computers of non-trusted
`individuals for these types of projects.
`
`[0005] Another problem with distributing computing on
`the Internct is that for similar sccurity concerns described
`
`above, many consumers, e.g. individuals, businesses, uni-
`versities, are unwilling to allow third party software to be
`run on their machines. By allowing a distributed process to
`execute on the consumer’s machine, the task may, among
`other things: (i) cause a system malfinction;(ii) improperly
`access confidential information; or (iii) otherwise adversely
`affect the performance of their computer.
`
`[0006] Thus, there is a need for a distributed computing
`system that will allow a project to be executed securely
`across the Internet using non-secure trusted machines. The
`system should protect
`the contents of the project
`trom
`improper tampering at the user machine. Furthermore, the
`system should protect
`the non-secure machine from
`improper tampering by the project.
`
`SUMMARYOF THE INVENTION
`
`[0007] One aspect of the invention comprises a prepro-
`cessor module for scanning the application program for code
`sequences that cause the computer to trap to the operating
`system and for modifying the code sequences such that the
`computer does not
`trap to the operating system, a server
`computer for recciving at least one application that has becn
`modified by the preprocessor module, a network, and a
`client computer operably connected to the server computer
`via the network, wherein the client computer receives the
`modified application from the server computer, wherein
`subsequent to receiving the application, the client computer
`executes the application.
`
`[0008] Another aspect of the invention comprises scan-
`ning the application for code sequences that cause the
`computer to trap to the operating system, and modifying the
`code sequences such that the computer does not trap to the
`operating system.
`
`[0009] Yet another aspectof the invention comprises load-
`ing the application, marking all of the code pages of the
`loaded application execute only, and preventing the appli-
`cation from creating executable data during the execution of
`the application.
`
`[0010] Yet another aspect of the invention comprises pre-
`venting the application from creating executable data during
`the execution of the application, scanning the application for
`code sequences that cause the computer to trap to the
`operaling system, and modifying the code sequences such
`that the computer does not trap to the operating system.
`
`‘Yet another aspect of the invention comprises pre-
`(0011]
`venting the application from creating executable data during
`the execution of the application, and preventing at least one
`code page of the application from becoming readable and
`writeable.
`
`[0012] Yet another aspect of the invention comprises load-
`ing the application, marking all of the data pages of the
`loaded application read and write only, and preventing the
`application from creating executable data during the execu-
`tion of the application.
`
`[0013] Yet another aspect of the invention comprises pre-
`venting the application from creating executable data during
`the execution of the application, and preventing the appli-
`cation from modifying executable files or executing any
`application gencratedfilcs.
`
`

`

`US 2002/0066022 A1
`
`May30, 2002
`
`[0014] Yet another aspect of the invention comprises
`before the execution of an application program, scanning the
`application program for code sequences that cause the
`computer to trap to the operating system, before the execu-
`tion of
`the application program, modifying the code
`sequences such that
`the computer does not
`trap to the
`operating system, during or subsequent to the execution of
`the application program, scanning executable data that is
`created by the application program for sequencesthat trap to
`the operating system, and during or subsequent
`to the
`execution of the application program, scanning new execut-
`able files that are created or modified by the application
`program, and during or subsequent to the execution of the
`application program, modifying the executable data and the
`new files such that the application program does nottrap to
`the operaling system.
`[0015] Yet another aspect of the invention comprises scan-
`ning the application for code sequences that cause the
`computer to trap to the operating system, modifying the code
`sequences such that
`the computer does not
`trap to the
`operating system, scanning the dynamically generated code
`that is created by the application for code sequences that
`cause the computer to trap to the operating system, and
`modifying the code sequences such that the computer does
`not trap to the operating system.
`[0016] Yet another aspect of the invention comprises scan-
`ning the application for code sequences that cause the
`computer to trap to the operating system, modifying the code
`sequences such that
`the computer does not
`trap to the
`operating system, scanning the dynamically generated code
`that is created by the application for code sequences that
`cause the computer to trap to the operating system, and
`modifying the code sequences such that the computer does
`not trap to the operating system.
`[0017] Yet another aspect of the invention comprises
`means for scanning the application program for code
`sequences that cause the computer to trap to the operating
`system, and means for moditying the code sequences such
`that the computer does not trap to the operating system.
`[0018] Yet another aspect of the invention comprises
`means for preventing the application from creating execut-
`able data during the execution of the application, and means
`for preventing the application from modifying executable
`files or executing any application generated files.
`[0019] Yet another aspect of the invention comprises
`means for scanning the application for code sequences that
`cause the computer to trap to the operating system, means
`for modifying the code

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket