Systems and methods for protecting software from unlicensed copying and use
First Claim
Patent Images
1. A processing system for protecting a software program from unauthorized use, said software program including one or more unencrypted instructions stored in memory associated with said software program, said processing system comprising:
- a processing unit operable to;
remove at least one selected said unencrypted instruction from an executable area in said memory associated with executable portions of said program;
encrypt said at least one selected unencrypted instruction removed from said software program utilizing an encryption algorithm to produce an encrypted instruction;
store said encrypted instruction within a first non-executable data area in said memory associated with said software program; and
insert at least one trappable instruction in place of said encrypted instruction within said executable area in memory allowing said software program to be linked with one or more other programs.
5 Assignments
0 Petitions
Accused Products
Abstract
Disclosed are systems and methods for protecting a software program from unauthorized use and copying through the removal at least one of a plurality of instructions comprising a software program, and encrypting the removed instruction utilizing an encryption algorithm to produce an encrypted instruction, the encryption algorithm responsive to a randomly generated key.
178 Citations
25 Claims
-
1. A processing system for protecting a software program from unauthorized use, said software program including one or more unencrypted instructions stored in memory associated with said software program, said processing system comprising:
-
a processing unit operable to; remove at least one selected said unencrypted instruction from an executable area in said memory associated with executable portions of said program; encrypt said at least one selected unencrypted instruction removed from said software program utilizing an encryption algorithm to produce an encrypted instruction; store said encrypted instruction within a first non-executable data area in said memory associated with said software program; and insert at least one trappable instruction in place of said encrypted instruction within said executable area in memory allowing said software program to be linked with one or more other programs. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A processing system for decrypting an executable-linkable software program, said software program stored in an associated area in memory, said program including one or more unencrypted instructions and a current version number stored in a first data sub-area within said associated data area in memory, said processing system comprising:
a processing unit operable to compare said current version number against a retrieved licensed version number associated with said software program to determine validity of use of said software program, said processing unit further operable upon a determination of validity of said software program to; retrieve an encrypted instruction from a second data sub-area within said area in memory, said encrypted instruction having been generated from an unencrypted instruction selectively removed previously from said program stored in said area in memory and encrypted; decrypt said encrypted instruction utilizing a decryption algorithm; and insert said decrypted instruction into said software program stored in memory. - View Dependent Claims (7, 8, 9, 10)
-
11. A method for protecting a software program containing one or more unencrypted instructions from unauthorized use and copying, said method comprising the steps of:
-
encrypting at least one of said unencrypted instructions from said software program utilizing an encryption algorithm to produce an encrypted instruction; storing said encrypted instruction within a first non-executable data area within said software program; and inserting at least one trappable instruction in place of said encrypted instruction within said software program allowing said software program to be linked with one or more other programs. - View Dependent Claims (12, 13, 14, 15)
-
-
16. A method for decrypting an encrypted software program, said encrypted software program stored in an associated memory including a non-executable data area, said program including, in memory, one or more unencrypted instructions and a current version number stored in a first data sub-area within said data area in memory, said method comprising the steps of:
comparing said current version number against a retrieved licensed version number associated with said encrypted software program to determine validity of use of said encrypted software program, upon a determination of validity of said encrypted software program, said method further comprising the steps of; retrieving an encrypted instruction from a second data sub-area within said non-executable data area, the encrypted instruction having been generated from an unencrypted instruction selectively removed from said program stored in memory and encrypted; decrypting said encrypted instruction utilizing a decryption algorithm; and inserting said decrypted instruction into said encrypted software program stored in memory. - View Dependent Claims (17, 18, 19, 20, 21)
-
22. A computer, including a keyboard, a display monitor, at least one processing unit and at least one memory storage device, for protecting an unencrypted software program stored in an associated area in memory in said memory storage device from unauthorized utilization, said computer comprising:
-
an output port for outputting data to said display monitor; an input port for receiving said software program containing one or more unencrypted instructions, said software program including means for indicating whether said software program is encrypted; an encryption processor, responsive to said indicating means, for encrypting said software program, said encryption processor operable to; remove at least one selected said unencrypted instruction from an executable sub-area of said area in memory associated with said program; encrypt said at least one selected unencrypted instruction utilizing an encryption algorithm to produce an encrypted instruction; store said encrypted instruction within a first non-executable data sub-area in said memory area associated within said software program; and insert at least one trappable instruction in place of said encrypted instruction within said executable sub-area in memory allowing said software program to be linked with one or more other executable programs; and a transformer processor, responsible to said indicating means, for decrypting said software program, said transformer processor operable to; retrieve a current version number from a second non-executable data area within said software program; retrieve a licensed version number from a data storage device when a temporary storage device is empty, and store said retrieved licensed version number in said temporary storage device; and compare said current version number against said licensed version number to determine validity of use of said software program, said transformer processor further operable upon a determination of validity of said software program to; retrieve an encrypted instruction from said first non-executable data sub-area in memory; decrypt said encrypted instruction utilizing a decryption algorithm; and insert said decrypted instruction into said software programming said executable sub-area in memory. - View Dependent Claims (23, 24, 25)
-
Specification