← Back to Patent Explorer
US5530752A Expired / Lapsed US ⏱️ 0.0 years remaining

Systems and methods for protecting software from unlicensed copying and use

Assignee: Gen Digital Inc
•
Filing: 1994-02-22
•
Granted: 1996-06-25
•
Expires: 2014-02-22
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

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.

Inventors

  • 👤 Robert J. Rubin

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-26 07:27
CPC Classifications
G; G06; G06F; G06F21/00; G06F21/10; G06F21/12; G06F21/121; G06F21/125; G06F2207/00; G06F2207/72; G06F2207/7219; G06F2211/00; G06F2211/007

Claims Analysis

Total Claims: 30
Claim 1
Independent Claim 131 words
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.
Claim 2
Dependent Claim 131 words
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.
Claim 3
Dependent Claim 31 words
The processing system as set forth in claim 1 wherein said processing unit further includes: means for randomly generating a key, said randomly generated key operable to control said encryption algorithm.
Claim 4
Dependent Claim 33 words
The processing system as set forth in claim 2 wherein said processing unit is further operable to: store said key in a second non-executable area in said memory associated with said software program.
Claim 5
Dependent Claim 23 words
The processing system as set forth in claim 1 wherein a first trappable instruction is operable to: generate a message to a user.
Claim 6
Dependent Claim 41 words
The processing system as set forth in claim 1 wherein said processing unit is further operable to: store a flag for indicating that said software program is encrypted in a second non-executable data area in memory associated with said software program.
Claim 7
Dependent Claim 152 words
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.
Claim 8
Dependent Claim 152 words
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.
Claim 9
Dependent Claim 38 words
The processing system as set forth in claim 6 wherein said processing unit is further operable to: retrieve a key from a third data sub-area within said area in memory, said key operable to control said decryption algorithm.
Claim 10
Dependent Claim 30 words
The processing system as set forth in claim 6 further including: a license manager program operable to control storage of said retrieved license version number within a memory storage device.
Claim 11
Dependent Claim 28 words
The processing system as set forth in claim 6 wherein said processing system further includes: means for temporarily storing said retrieved licensed version number within fast access memory.
Claim 12
Dependent Claim 44 words
The processing system as set forth in claim 6 wherein said processing unit is further operable to: remove a trappable instruction from said encrypted software program, said trappable instruction having been inserted in said program stored in memory in place of said removed instruction.
Claim 13
Independent Claim 89 words
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.
Claim 14
Independent Claim 89 words
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.
Claim 15
Dependent Claim 28 words
The method as set forth in claim 11 wherein said method further includes the step of: generating a key, said generated key operable to control said encryption algorithm.
Claim 16
Dependent Claim 29 words
The method as set forth in claim 11 wherein said method further includes the step of: storing said key within a second non-executable data area within said software program.
Claim 17
Dependent Claim 19 words
The method as set forth in claim 11 wherein a first trappable instruction generates a message to a user.
Claim 18
Dependent Claim 29 words
The method as set forth in claim 11 further including the step of: storing a flag indicating that said software program is encrypted in a second non-executable data area.
Claim 19
Independent Claim 154 words
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.
Claim 20
Independent Claim 154 words
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.
Claim 21
Dependent Claim 39 words
The method as set forth in claim 16 wherein said method, upon a determination of validity of said encrypted software program, further includes the step of: retrieving a key from a third data sub-area within said non-executable data area.
Claim 22
Dependent Claim 31 words
The method as set forth in claim 17 wherein said method further includes the step of: inputting said key into said decryption algorithm, said key operable to control said decryption algorithm.
Claim 23
Dependent Claim 50 words
The method as set forth in claim 16 wherein said method, upon a determination of validity of said encrypted software program, further includes the step of: removing a trappable instruction from said encrypted software program, the trappable instruction having been inserted in the program in place of the removed instruction.
Claim 24
Dependent Claim 37 words
The method as set forth in claim 16 wherein said method, upon a determination of validity of said encrypted software program, further includes the step of: temporarily storing said retrieved licensed version number within fast access memory.
Claim 25
Dependent Claim 36 words
The method as set forth in claim 16 further including the step of: removing a privileged instruction from said software program, the privileged instruction having been inserted in the program in place of the removed instruction.
Claim 26
Dependent Claim 321 words
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.
Claim 27
Dependent Claim 321 words
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.
Claim 28
Dependent Claim 28 words
The computer as set forth in claim 22 wherein said encryption processor is further operable to: set said indicating means to indicate that said software program is encrypted.
Claim 29
Dependent Claim 29 words
The computer as set forth in claim 23 wherein said computer further includes: means responsive to execution of said trappable instruction for outputting a message to said output port.
Claim 30
Dependent Claim 39 words
The computer as set forth in claim 23 wherein said encryption processor further includes: means for generating and storing a key in a third non-executable data area within said software program, said key operable to control said encryption algorithm.

References Cited (Backward Citations)

US4168396A Cited
US4525599A Cited
US4791565A Cited
US4888798A Cited
US4930073A Cited
US5319705A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 1999-06-25 1999-12-25 2000-06-25 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2003-06-25 2003-12-25 2004-06-25 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2007-06-25 2007-12-25 2008-06-25 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag