Method and system for preventing unauthorized use of software
First Claim
1. A system for reducing unauthorized use by data processing apparatus of a software program having, as a portion thereof, predetermined values of selected inherent, system independent characteristics of authorized data processing apparatus, said system comprising:
- means for determining actual values of said selected characteristics for operating data processing apparatus attempting to run said software program;
means, response to said means for determining, for comparing said determined actual values with said predetermined values;
means, responsive to said means for comparing, for selectively running said software program;
wherein said data processing apparatus includes a read only memory (ROM), and said predetermined values include an identification value for said ROM, and said identification value for said ROM comprises a cyclic redundancy check (CRC) value of contents of said ROM; and
wherein said data processing apparatus includes a processor having at least one register, and wherein said means for determining further comprises;
means for multiplying a value contained in said register by a first constant (C);
addressing means for addressing successive locations of said ROM;
means, responsive to said successive locations, for then successively adding to said register values contained in said successive locations;
means for then dividing said values contained in said register by a second constant (D) to produce a quotient and a remainder value;
and means for loading said register with said remainder value, whereby said register then contains said CRC value.
1 Assignment
0 Petitions
Accused Products
Abstract
A technique is disclosed for preventing a computer program from being used by a computer system other than a designated system. The values of certain characteristics exhibited by the designated computer system first are stored, and then the values of those same characteristics exhibited by the computer system which is intended to use the computer program are measured and compared to the stored values. If the compared values are substantially the same, the computer program may be executed. However, if they are different, the computer system which was intended to use the program is inhibited from executing that program. The aforementioned characteristics comprise one or more, and preferably at least two, of the following: an identification of the processor included in the computer system, the clock speed of the clock generator included in that system, an identification of the ROM normally provided with the processor, the wait time assigned to the processor for accessing a RAM, the actual rotary speed of a disk drive normally provided with the computer system, the access speed of that disk drive, and the sector interleave value of that disk drive.
-
Citations
17 Claims
-
1. A system for reducing unauthorized use by data processing apparatus of a software program having, as a portion thereof, predetermined values of selected inherent, system independent characteristics of authorized data processing apparatus, said system comprising:
-
means for determining actual values of said selected characteristics for operating data processing apparatus attempting to run said software program; means, response to said means for determining, for comparing said determined actual values with said predetermined values; means, responsive to said means for comparing, for selectively running said software program; wherein said data processing apparatus includes a read only memory (ROM), and said predetermined values include an identification value for said ROM, and said identification value for said ROM comprises a cyclic redundancy check (CRC) value of contents of said ROM; and wherein said data processing apparatus includes a processor having at least one register, and wherein said means for determining further comprises; means for multiplying a value contained in said register by a first constant (C); addressing means for addressing successive locations of said ROM; means, responsive to said successive locations, for then successively adding to said register values contained in said successive locations; means for then dividing said values contained in said register by a second constant (D) to produce a quotient and a remainder value; and means for loading said register with said remainder value, whereby said register then contains said CRC value. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A system for reducing unauthorized use by data processing apparatus of a software program having, as a portion thereof, predetermined values of selected inherent, system independent characteristics of authorized data processing apparatus, said system comprising:
-
means for determining actual values of said selected characteristics data for data processing apparatus attempting to run said software program; means, responsive to said means for determining, for comparing said determined actual values with said predetermined values; means, responsive to said means for comparing, for selectively running said software program; wherein said means for determining comprises access timing means for determining a time for the read/write head to access a predetermined number of tracks, and wherein said access timing means further comprises; read means for reading a predetermined sector from a particular track on the disk of said disk drive; head moving means, responsive to said read means, for then causing said read/write head to move forward and backward across a number of tracks on said disk to return to said particular track; re-read means, responsive to said head moving means, for then re-reading said predetermined sector; re-read timing means, responsive to said head moving and re-read means, for obtaining a time between return of said rad/write head to said particular track and re-reading of said predetermined sector; and
means, responsive to said re-read means and said disk;for obtaining a difference between a time for said disk to complete a rotation and said obtained time. - View Dependent Claims (9, 10)
-
-
11. A system for reducing unauthorized use by data processing apparatus of a software program having, as a portion thereof, predetermined values of selected inherent, system independent characteristic of authorized data processing apparatus, said system comprising:
-
means for determining actual values of said selected characteristics for data processing apparatus attempting to run said software program; means, responsive to said means for determining, for comparing said determined actual values with said predetermined values; means, responsive to said means for comparing, for selectively running said software program; wherein said data processing apparatus includes a disk drive, and said predetermined values include a rotary speed value for said disk drive; and
wherein said means for determining further comprises;reading means for reading a predetermined sector from said disk drive at least twice in succession; and means, responsive to said reading means, for measuring elapsed time between successive reading operations. - View Dependent Claims (12)
-
-
13. A system for reducing unauthorized use by data processing apparatus of a software program having, as a portion thereof, predetermined values of selected inherent, system independent characteristics of authorized data processing apparatus, said system comprising:
-
means for determining actual values of said selected characteristics for operating data processing apparatus attempting to run said software program; means, responsive to said means for determining, for comparing said determined actual values with said predetermined values; means, responsive to said means for comparing, for selectively running said software program; wherein said operating data processing apparatus includes; a clock generator and said predetermined values includes a clock speed value for said clock generator; a processor having at least one register, and wherein said means for determining comprises shifting means for shifting said register in responsive to clock pulses generated by said clock generator; timing means, responsive to said shifting means, for measuring an amount of time for shifting said register; and means, responsive to said timing means, for determining from said measured amount of time a clock speed for said clock generator; and
wherein said means for determining said clock speed of said clock generator further comprises;indicating means for providing an indication of a number of clock pulses used by said processor to shift said register; and means, responsive to said indicating means, for dividing said measured amount of time by said indication to provide a value of a clock pulse period. - View Dependent Claims (14, 15)
-
-
16. A system for reducing unauthorized use by data processing apparatus of a software program having, as a portion thereof, predetermined values of selected, inherent, system independent characteristics of authorized data processing apparatus, said system comprising:
-
means for determining actual values of said selected characteristics for operating data processing apparatus attempting to run said software program; means, responsive to said means for determining for comparing said determined actual values with said predetermined values; means, responsive to said means for comparing, for selectively running said software program; wherein said data processing apparatus includes; a processor; and
said predetermined values include an identification value for said processor;a data bus coupled to said processor, and said identification value for said processor includes a predetermined size value for said data bus; and a memory device coupled to said data bus; and
wherein said means for determining further comprises;first exchanging means for exchanging an n-bit data character between said processor and said memory device a predetermined number of times; first measuring means for measuring a first time duration for said predetermined number of times n-bit characters are exchanged; second exchanging means for exchanging a 2n-bit data character between said processor and said memory device said predetermined number of times; second measuring means for measuring a second time duration for said predetermined number of times 2n-bit characters are exchanged; and means for determining that said data bus is 2n-bit wide if said first and second measured time durations are substantially equal and for determining that said data bus is n-bits wide if said first and second measured time durations are not substantially equal.
-
-
17. A system for reducing unauthorized use by data processing apparatus of a software program having, as a portion thereof, predetermined values of selected inherent, system independent characteristics of authorized data processing apparatus, said system comprising:
-
means for determining actual values of said selected characteristics for data processing apparatus attempting to run said software program; means, responsive to said means for determining, for comparing said determined actual values with said predetermined values; means, responsive to said means for comparing, for selectively running said software program; wherein said data processing apparatus attempting to run said software program includes a disk drive having a disk and a read/write head for reading/writing data in interleaved sectors; and
said predetermined values include a sector interleave value;wherein said sector interleave value is a measure of the number of sectors which separate logically sequential sectors on said disk; and
wherein said means for determining further comprises;rotation timing means for measuring a time for accessing a logical first sector and a logical M-th sector, wherein m is an integer preset to the value "2"; access timing means, response to said accessing means, for measuring a time to access the logical M-th sector; M determining means, responsive to said rotation timing and said access timing means, for determining if the difference between said time for said disk to make one complete rotation and said time to access the logical M-th sector is equal to said time for one complete sector to rotate past said head; M incrementing means, responsive to said M determining means, for incrementing the value of M until said difference is equal to said time for one complete sector to rotate past said head; and means, responsive to said M incrementing means, for determining said interleave value as a function of M.
-
Specification