`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