Distributed execution software license server
First Claim
1. A method of preventing unauthorized use of an executable file comprisingselecting from said executable file sequences of instructions, creating a modified executable file by replacing each of said selected sequences of instructions with instructions that interrupt the normal flow of execution, installing said modified executable file in a first computer, installing said selected sequences of instructions in a license server, executing said modified executable file in said first computer until one of said instructions that interrupt the normal flow of execution is encountered, communicating said first computer'"'"'s machine state to said license server, determining in said license server whether said first computer is authorized, executing one of said selected sequences of instructions in said license server if said first computer is authorized, communicating the results of said license server'"'"'s execution of said one of said selected sequences of instructions to said first computer, and continuing execution of said modified executable file in said first computer until another of said instructions that interrupt the normal flow of execution is encountered or until execution of said modified executable file is complete;
- wherein said machine state comprises the contents of the CPU registers and the program counter value, and wherein said license server emulates operation of said first computer when said license server executes said one of said selected sequences of instructions in said license server.
0 Assignments
0 Petitions
Accused Products
Abstract
A method of protecting an executable image from unlicensed use is provided by remote execution of sequences of microprocessor instructions. Means of selecting sequences of instructions that execute infrequently and provide a high level of security against reverse engineering is provided. Selection means includes run-time profiling of an executable running under normal conditions. The selected sequences of instructions are replaced with instructions that interrupt the normal flow of execution and transfer control to a license server. A client computer executes the modified executable until the replaced sequences interrupt the normal flow of execution and transfer control to a license server. The license server executes the instructions which were replaced in the modified executable upon proper authorization by emulating the client microprocessor.
387 Citations
16 Claims
-
1. A method of preventing unauthorized use of an executable file comprising
selecting from said executable file sequences of instructions, creating a modified executable file by replacing each of said selected sequences of instructions with instructions that interrupt the normal flow of execution, installing said modified executable file in a first computer, installing said selected sequences of instructions in a license server, executing said modified executable file in said first computer until one of said instructions that interrupt the normal flow of execution is encountered, communicating said first computer'"'"'s machine state to said license server, determining in said license server whether said first computer is authorized, executing one of said selected sequences of instructions in said license server if said first computer is authorized, communicating the results of said license server'"'"'s execution of said one of said selected sequences of instructions to said first computer, and continuing execution of said modified executable file in said first computer until another of said instructions that interrupt the normal flow of execution is encountered or until execution of said modified executable file is complete; -
wherein said machine state comprises the contents of the CPU registers and the program counter value, and wherein said license server emulates operation of said first computer when said license server executes said one of said selected sequences of instructions in said license server. - View Dependent Claims (3, 4, 5, 6, 7, 8, 9)
-
-
2. 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, a second software object, and a third software object;
-
wherein said first software object executes on said vendor'"'"'s computer, selects from said executable file sequences of instructions, creates a modified executable file by replacing said selected sequences of instructions with instructions that interrupt the normal flow of execution, communicates said selected sequences of instructions to said license server, and communicates said modified executable file to said user'"'"'s computer;
wherein said second software object executes on said user'"'"'s computer, executes said modified executable file until one of said instructions that interrupt the normal flow of execution is encountered, communicates said first computer'"'"'s machine state to said license server, receives the results of said license server'"'"'s execution of said selected sequences of instructions, and utilizes said results to continue execution of said modified executable file until another of said instructions that interrupt the normal flow of execution is encountered or until execution of said modified executable file is complete;
wherein said third software object executes on said license server, determines whether said user'"'"'s computer is authorized, receives said machine state from said user'"'"'s computer, utilizes said user'"'"'s computer'"'"'s machine state to initialize execution of each of said selected sequences of instructions at the address of said user'"'"'s computer at the time that said instructions that interrupt the normal flow of execution were encountered if and only if said user'"'"'s computer is authorized, and communicates said results of execution of said selected sequences of instructions to said user'"'"'s computer;
wherein said machine state comprises the contents of the CPU registers and the program counter value; and
wherein said license server emulates operation of said first computer when said license server executes said one of said selected sequences of instructions in said license server. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16)
-
Specification