DISTRIBUTED EXECUTION SOFTWARE LICENSE SERVER
First Claim
Patent Images
1. A method of preventing unauthorized use of an executable file comprising the steps of:
- replacing portions of said executable file with remote calls to a license server, installing said executable file in a first computer, installing said replaced portions in said license server, executing said executable file in said first computer, having said license server determine whether said first computer is authorized, and permitting execution of said replaced portions only if said first computer is authorized.
0 Assignments
0 Petitions
Accused Products
Abstract
A method of protecting software from unlicensed use is provided by placing a portion of the executable software code on a secure server and providing for the proffer of a digital key to the secure server by a client who wishes to run the software application. The executable software is, provided that such digital key is authenticated, then run in distributed fashion on both the client and secure server. Selection means to determine the portion of the executable software code to be placed on the secure server is also provided.
-
Citations
15 Claims
-
1. A method of preventing unauthorized use of an executable file comprising the steps of:
-
replacing portions of said executable file with remote calls to a license server, installing said executable file in a first computer, installing said replaced portions in said license server, executing said executable file in said first computer, having said license server determine whether said first computer is authorized, and permitting execution of said replaced portions only if said first computer is authorized.
-
-
2. A method of preventing unauthorized use of an executable file comprising the steps of:
-
replacing portions of said executable file with remote calls to a license server, installing said executable file in a first computer, providing a digital key to said first computer, installing said replaced portions in said license server, communicating said digital key from said first computer to said license server, executing said executable file in said first computer, having said license server determine whether said digital key is authorized, and permitting execution of said replaced portions only if said digital key is authorized.
-
-
3. A system which protects an executable file from unauthorized use comprising
a license server; -
a user'"'"'s computer;
a vendor'"'"'s computer;
a first software object which executes on said vendor'"'"'s computer, replaces selected portions of said executable file with remote calls to said license server, communicates said replaced portions of said executable file to said license server, and communicates said executable file to said user'"'"'s computer;
a second software object which executes on said user'"'"'s computer, and provides communication of intermediate execution data between said user'"'"'s computer and said license server upon the occurrence of a remote call in said executable file when said executable file is executing on said user'"'"'s computer; and
a third software object which executes on said license server, determines whether said user'"'"'s computer is authorized, receives said intermediate execution data, executes said replaced portions if said user'"'"'s computer is authorized, and communicates the results of the execution of said replaced portions to said user'"'"'s computer.
-
-
4. A system which protects an executable file from unauthorized use comprising
a license server, a user'"'"'s computer, and a vendor'"'"'s computer, a first software object which executes on said license server, creates a digital key, and communicates said digital key to said vendor'"'"'s computer; -
a second software object which executes on said vendor'"'"'s computer, replaces selected portions of said executable file with remote calls to said license server, communicates said digital key to said user'"'"'s computer, communicates said replaced portions of said executable file to said license server, and communicates said executable file to said user'"'"'s computer;
a third software object which executes on said user'"'"'s computer, communicates said digital key to said license server, and communicates intermediate execution data to said license server upon the occurrence of each of said remote calls; and
a fourth software object which executes on said license server, authenticates said digital key received from said user'"'"'s computer, receives said intermediate execution data, executes said replaced portions if said digital key is authorized, and communicates the results of the execution of said replaced portions to said user'"'"'s computer. - View Dependent Claims (5)
-
-
6. A system which protects an executable file from unauthorized use comprising
a license server; -
a user'"'"'s computer;
a vendor'"'"'s computer;
a first software object which executes on said license server, creates a public key using a public key private key algorithm, and communicates said public key to said vendor'"'"'s computer;
a second software object which executes on said vendor'"'"'s computer, replaces selected portions of said executable file with remote calls to said license server, creates a digital key, encrypts said replaced portions and said digital key with said public key, communicates said encrypted replaced portions and said encrypted digital key to said user'"'"'s computer, and communicates said executable file to said user'"'"'s computer;
a third software object which executes on said user'"'"'s computer, controls execution of said executable file, communicates said encrypted replaced portions and said encrypted digital key to said license server, communicates intermediate execution data to said license server upon the occurrence of each of said remote calls; and
a fourth software object which executes on said license server, decrypts said encrypted replaced portions and said encrypted digital key received from said user'"'"'s computer with said private key, receives said intermediate execution data, executes said replaced portions, and communicates the results of the execution of said replaced portions to said user'"'"'s computer.
-
-
7. A method of preventing unauthorized use of an executable file comprising the steps of:
-
replacing portions of said executable file with remote calls to a license server, installing said executable file in a plurality of computers, installing said replaced portions in said license server, executing said executable file in one or more of said plurality of computers, having said license server determine whether each of said plurality of computers in which said executable file is executing is authorized, and permitting execution of said replaced portions only if said license server determines that the particular one of said plurality of computers in which said executable file is executing is authorized.
-
-
8. A method of preventing unauthorized use of an executable file comprising the steps of:
-
replacing portions of said executable file with remote calls to a license server, installing said executable file in a plurality of computers, providing a digital key to each of said plurality of computers, installing said replaced portions in said license server, communicating said digital key from one of said plurality of computers to said license server, executing said executable file in one or more of said plurality of computers, determining whether said digital key is authorized, and executing said replaced portions in said license server only if said digital key communicated from said one or more of said plurality of computers is authorized. - View Dependent Claims (9, 10, 11)
-
-
12. A method of preventing unauthorized use of an executable file comprising the steps of:
-
replacing portions of said executable file with remote calls to a license server, creating a digital key in a software vendor'"'"'s computer, encrypting said digital key with the public key of a license server'"'"'s public key private key encryption system, installing said executable file in a plurality of computers, providing said encrypted digital key to each of said plurality of computers, installing said replaced portions in said license server, communicating said encrypted digital key from one of said plurality of computers to said license server, executing said executable file in one or more of said plurality of computers, determining whether said digital key is authorized and decryptable by said license server, and executing said replaced portions in said license server only if said encrypted digital key communicated from said one or more of said plurality of computers is decryptable by said license server and authorized.
-
-
13. A system which protects an executable file from unlicensed use comprising
a license server, a user'"'"'s computer, and a vendor'"'"'s computer; -
wherein selected portions of said executable file are removed by software in said vendor'"'"'s computer, said license server has a public key private key algorithm encryption software installed, said removed portions of said executable file are encrypted by software running on said vendor'"'"'s computer using said license server'"'"'s public key, software in said vendor'"'"'s computer replaces said removed portions of said executable file with remote calls to said license server, said encrypted removed potions of said executable file are communicated to said user'"'"'s computer, the remaining portion of said executable file is communicated to said user'"'"'s computer, said user'"'"'s computer communicates said encrypted removed portions of said executable file to said license server; and
said encrypted removed portions of said executable file are decrypted by software running on said license server utilizing said license server'"'"'s private key;
whereby when said remaining portion of said executable file is run on said user'"'"'s computer, said removed portions are executed on said license server. - View Dependent Claims (14)
-
-
15. A method of selecting executable instructions to be removed from an executable file and replaced by remote calls to a license server comprising
executing said executable file, observing said execution to determine whether each current instruction sequence is a call, whether the destination address of said call resides in a previously rejected sequence, the number of times said instruction sequence executes the percentage of processing time said instruction sequence consumes how much memory space is moved by the execution of said instruction sequence whether said instruction sequence resides in publicly available code, and selecting said instruction sequence if the observed conditions meet user defined predetermined criteria.
Specification