`Edwards, Jr.
`
`[11] Patent Number:
`[45] Date of Patent:
`
`5,014,234
`May 7, 1991
`
`[54] SYSTEM WITH SOFfW ARE USAGE TIMER
`AND COUNTER FOR ALLOWING LIMITED
`USE BUT PREVENTING CONTINUED
`UNAUTHORIZED USE OF PROTECTED
`SOFTWARE
`Inventor: Gordon L. Edwards, Jr., Easley, S.C.
`[75]
`[73) Assignee: NCR Corporation, Dayton, Ohio
`[21) Appl. No.: 900,206
`[22] Filed:
`Aug. 25, 1986
`[5 l]
`Int. Cl.' ...................... G06F 12/14; G06F 11/34;
`G06F 7/02; H04L 9/32
`[52] U.S. Cl ..................................... 364/900; 364/969;
`364/969.4; 364/934; 364/921.8; 364/921.9;
`364/270; 364/286.4; 364/286.5; 364/246.6;
`364/246. 9; 364/251.4; 364/25 l.3; 3 80/ 4
`[58] Field of Search ...................... 340/825.31, 825.32,
`340/825.33, 825.34; 380/20, 23, 17, 4, 25;
`364/200 MS File, 900 MS File
`References Cited
`U.S. PATENT DOCUMENTS
`3,827,029 7/1974 Schlotterrer ........................ 364/200
`4,040,034 8/1977 Belady ................................. 364/200
`4,206,315 6/1980 Matyas et al. ........................ 178/22
`4,333,074 6/1982 Sutherland et al .............. 340/825.3
`4,430, 705 2/1984 Cannavino .......................... 364/200
`4,439,670 3/1984 Bassett et al. ....................... 235/382
`4,453,074 6/1984 Weinstein .............................. 380/24
`4,454,594 6/1984 Heffron et al. ..................... 364/900
`4,464,678 8/1984 Schiff et al. ......................... 358/122
`4.465.901 8/1984 Best .................................. 178/22.08
`4,484,306 11/1984 Kulctyckyj ......................... 364/900
`4,525,599 6/ 1985 Curran et al. .................... 178/22.08
`4,528,589 711985 Block et al. ........................... 380/10
`4,553,252 11/1985 Egendorf ............................ 364/900
`4,558,176 12/1985 Arnold ................................ 364/900
`4,562,306 12/1985 Chou et al. ....................... 178/22 08
`4.590,557 5/1986 Lillie ................................... 364/200
`4.593,353 6/1986 Pickholtz ............................ 364/200
`4,593.376 6/1986 Volk .................................... 364/900
`4,604,708 8/1986 Lewis ............................. 340/825.31
`
`(56]
`
`4,652,990 3/1987 Pailen et al. ........................ 364/200
`4,670,857 6/1987 Rackman ................................ 380/5
`4,683,553 7/1987 Mollier ................................ 235/382
`4, 700,386 10/1987 Kohn ..................................... 380/20
`4,707,804 11/1987 Leal ................................ 340/825.32
`4,716,588 12/1987 Thompson et al .................... 380/15
`4,719,566 1/1988 Kelley ............................ 340/825.34
`4,740,890 4/1988 William ............................... 364/200
`4,791;565 12/1988 Dunham .............................. 364/200
`4,796,120 · 1/1989 Wolfe .................................. 364/900
`4,799,635 1/1989 Nakagawa ........................... 364/900
`4,823,308 4/1989 Knight ................................ 364/900
`4,827,508 5/1989 Shear ..................................... 380/25
`4,864,494 9/1989 Kobus ............................ 340/825.31
`4,885,778 12/1989 Weiss .................................... 380/25
`4,924,378 5/1990 Hershey .................................. 380/4
`4, 932,054 6/1990 Chou .............................. 340/825.31
`4,937,863 6/1990 Robert .................................... 380/4
`4,951,249 8/1990 McClung ............................ 364/900
`Primary Examiner-Archie E. Williams, Jr.
`Assistant Examiner-Eric Coleman
`Attorney, Agent, or Firm-Wilbert Hawk, Jr.; Albert L.
`Sessler, Jr.
`ABSTRACT
`(57]
`A method is provided to prevent continued unautho(cid:173)
`rized use of protected software and to maintain control
`of sites where software is installed. The method allows
`unauthorized copies of the protected software to be
`installed and to operate for a limited time. However, if
`the user does not register the software within a pre(cid:173)
`scribed period of time, the protected software will be
`disabled. Prior to disabling, the software will operate
`for a period of time during which messages are pro(cid:173)
`vided to the user, warning that the software should be
`registered. Both a counter for counting the number of
`tiip.es that the protected software is used, and a timer for
`measuring the elapsed time since installation of the soft(cid:173)
`ware, are used in determining how long the protected
`software will be permitted to operate before either re(cid:173)
`gistration or disabling.
`
`9 Claims, 7 Drawing Sheets
`
`I
`I
`
`I
`
`r l
`RrnSTUTIOM ~ DATA
`
`SERIAL
`
`TO IMSUI! COUIMU!O OP!UTION UD Ullf!"UCE OF TfflS
`sonwm. TOU •UST umm ms llSULLATIOI IT SEIDllC
`THE FOLLOWING 'iifORUTIOI:
`
`1. SERIAL NUOER EQUALS l-114TSZTl481Z.
`2. INSl4LLUIOM SITE ADDRESS.
`3. IMSTALLUIOI om.
`4. CONUCT mso•
`mo ro:
`
`Xll ll llllllllll
`lllllllUllllll
`1 ll lX llll lllllllll
`lllXlllllllUlll
`
`PRESS REIURN IMO TOU Mm READ THIS 1uourno•
`
`APPLE EXHIBIT 1012
`Page 1 of 13
`
`
`
`U.S. Patent
`
`May 7, 1991
`
`Sheet 1of7
`
`5,014,234
`
`10\
`
`FIG. I
`
`DISK
`PROGRAMS
`••
`•
`•
`ANO Fl LES
`•
`•
`•
`
`SYSTEM
`TIMER
`
`18
`
`14
`
`17
`
`MEMORY
`COUNTER
`
`16
`
`12
`
`Z2
`
`20
`CARTRIDGE
`
`SYSTEM
`C T
`
`24
`
`26
`
`SYSTEM
`PRINTER
`
`FIG.7
`
`DEFUSE NUMBER __ ,
`"'
`
`PROG6
`
`fSFiLEl
`·-
`
`I
`I
`
`I
`I
`
`~
`
`xx xx
`
`/
`
`...
`'"
`""
`
`...
`'
`
`If
`
`PROG7
`
`APPLE EXHIBIT 1012
`Page 2 of 13
`
`
`
`U.S. Patent
`
`May 7, 1991
`
`Sheet 2 of 7
`
`5,014,234
`
`FIG. 2
`
`EXAMINE
`SFILE
`
`30
`
`y
`
`38
`
`40
`
`N
`
`36
`
`EXECUTE PROG2
`CREATE FILE I
`
`I NS TALL REGISTRATION
`ANO GENERATE
`SYSTEM SERIAL NUMBER,
`WRITE TO FIL£ G
`
`CREATE Fl L(\SER I AL'',
`01 SPLAY AND I OR PR INT
`MESSAGE TELLING
`WHERE AND TO WHOM
`TO SEND THE REGISTRATION
`
`34
`
`EXIT
`
`APPLE EXHIBIT 1012
`Page 3 of 13
`
`
`
`U.S. Patent
`
`May 7, 1991
`
`Sheet 3 of 7
`
`5,014,234
`
`42
`
`44
`
`PROG3
`
`EXAMINE
`SFILE
`
`FIG. 3A
`
`IS
`REGISTRATION
`INSTALLED. E.G. IS
`ARG3 • CONST1, OR CONST!+ 1,
`OR CONST1 *3
`? •
`
`N
`
`48
`
`EXIT
`
`y
`
`N
`
`52
`
`INCREMENT
`COUNTER
`
`y
`
`54
`
`DECREMENT COUNTER
`
`y
`
`COMPARE ARGl
`TO CURRENT TIME
`
`APPLE EXHIBIT 1012
`Page 4 of 13
`
`
`
`U.S. Patent
`
`May 7, 1991
`
`Sheet 4 of 7
`
`5,014,234
`
`FIG. 38
`
`EXIT
`
`N
`
`y
`
`66
`
`COPY ANO DECRYPT
`FILE A TO CREATE PROG5
`
`68
`
`EX EC UTE THE PROGRAM
`PROG5 WHICH REMOVES
`PROTECTED FILES
`FROM THE SYSTEM
`
`10
`
`N
`
`COPY AND DECRYPT
`FlLE 0 TO CREATE PROG4
`
`72
`
`CREATE DISPLAY FILE H
`AND PRINT FILE E
`
`74
`
`EXECUTE THE PROGRAM
`PROG4 WHICH PRINTS
`AND DISPLAYS MESSAGES
`FILE H AND FILE E,
`THEN DELETES
`DECRYPTED FILES
`
`76
`
`EXIT
`
`APPLE EXHIBIT 1012
`Page 5 of 13
`
`
`
`U.S. Patent
`
`May 7, 1991
`
`Sheet S of 7
`
`5,014,234
`
`FIG.4
`
`78
`
`80
`
`PROG6
`
`EXECUTE PROG6 WHICH RECEIVES
`THE DEFUSE NUMBER FROM OPERATOR
`VI A CRT AND CREATES FILE F.
`IT ALSO COPIES AND DECRYPTS
`Fl LE C TO CREATE PROG.7
`
`82
`
`PROG7
`
`84
`
`EXECUTE PROG7
`VERIFIES THAT THE
`DEFUSE NUMBER IS
`CORRECT FOR
`THIS SYSTEM
`
`88
`
`DISPLAY MESSAGE
`Fl LE B THAT DEFUSE
`~N __ __. HAS FAILED BECAUSE
`THE DEFUSE NUMBER
`DOES NOT NATCH
`THIS SYSTEM
`
`92
`
`90
`
`EXIT
`
`y
`
`DEFUSE THE SYSTEM
`BY WRITING
`CONS Tl+ 1 TO ARG3
`
`EXIT
`
`94
`
`APPLE EXHIBIT 1012
`Page 6 of 13
`
`
`
`U.S. Patent
`
`May 7, 1991
`
`Sheet 6 of 7
`
`5,014,234
`
`FIG.5
`
`I PROG2t----·~ Fl LE I I
`Fl
`.•
`.,
`
`I
`I
`I
`
`.. I
`,...
`I
`.---.J,."' PROGl __ __....
`I
`..,. I
`
`Fl
`l.____I
`
`I
`I
`I
`
`XXXX
`
`.._,___ REGISTRATION
`DATA
`
`I
`
`SERIAL
`
`TO INSURE CONTINUED OPERATION AND MAINTENANCE OF THIS
`SOFTWARE, YOU MUST REGISTER TH lS INSTALLATION BY SENDING
`THE FOLLOWING INFORMATION:
`
`I. SERIAL NUMBER EQUALS T-124762734812.
`2.
`INSTALLATION SITE ADDRESS.
`3.
`INSTALLATION DATE.
`4. CONTACT PERSON
`xxxxxxxxxxxxxxx
`xxxxxxxxxxxxxxx
`xxxxxxxxxxxxxxxxxx
`xxxxxxxxxxxxxxxx
`
`SEND TO:
`
`PRESS RETURN WHEN YOU HAVE READ THIS INFORMATION
`
`APPLE EXHIBIT 1012
`Page 7 of 13
`
`
`
`U.S. Patent
`
`May 7, 1991
`
`Sheet 7 of 7
`
`5,014,234
`
`FIG. 6
`
`MESSAGE TO OPERATOR :
`. THIS SOFTWARE HAS NOT BEEN
`REGISTERED WITH THE PROPRIETOR.
`THIS SOFTWARE WI LL SELF - DESTRUCT
`UNLESS IT IS PROPERLY REGISTERED.
`
`PROGRAM TO
`BE PROTECTED
`
`fsffiE1
`
`I
`I
`I
`'"'
`
`I
`I
`I
`...
`
`xx xx
`
`~ PROG3
`' "'
`
`. .,
`
`I
`I
`
`I I
`
`...
`
`...
`·' •
`
`PROG4
`
`PROGS
`
`DESTROY
`FILES
`
`...
`
`I
`I
`I
`
`J
`
`APPLE EXHIBIT 1012
`Page 8 of 13
`
`
`
`1
`
`5,014,234
`
`2
`time the software is subsequently operated; and causing
`the software to be disabled when the counter has been
`decremented to a second predetermined value.
`It is accordingly an object of the present invention to
`S provide a method for preventing continued unautho(cid:173)
`rized use of protected software in a data processing
`system.
`Another object is to provide a method for disabling
`software after a period of use and a warning message if
`the user does not contact the proprietor of the software
`and obtain a defusing number.
`Another object is to use a system clock in a data
`processing system to generate a serial number which is
`unique to the software system on which it was gener(cid:173)
`ated, and which can be used to protect said software
`against illegal installations.
`Another object is to provide a software method to
`protect software against illegal installations in which a
`unique serial number is generated for each system using
`the system clock of the associated data processing sys(cid:173)
`tem, and in which, when the software is registered with
`the software proprietors, a defusing number based on
`said serial number is returned to the user, and is em-
`25 ployed to prevent disabling of the software, as would
`otherwise take place in the case of an illegal installation.
`With these and other objects, which will become
`apparent from the following description, in view, the
`invention includes certain novel features, a preferred
`form or embodiment of which is hereinafter described
`with reference to the drawings which accompany and
`form a part of this specification.
`
`SYSTEM WITH SOFTWARE USAGE TIMER AND
`COUNTER FOR ALLOWING LIMITED USE BUT
`PREVENTING CONTINUED UNAUTHORIZED
`USE OF PROTECTED SOFfW ARE
`
`BACKGROUND OF THE INVENTION
`Unauthorized use of proprietary computer programs
`is widespread. Since development costs of most soft·
`ware are substantial, it is necessary for developers of 10
`such software to set licensing fees for the use of such
`software at a sufficient level to recover such costs and
`to provide a profit to the developers. Such pricing pro(cid:173)
`vides an incentive for some users to attempt to obtain
`programs at lower costs by unauthorized copying or by 15
`using on several sites software which has been licensed
`for only one site.
`Various methods have been employed for preventing
`the use of programs by persons who have obtained them
`in an unauthorized manner. Such methods include the 20
`use of a hardware "key" which must be used with the
`program, the encryption of programs, and the use of
`"trap" conditions.
`
`SUMMARY OF THE INVEN'TJON
`The present invention relates to a method for pre·
`venting continued unauthorized use of protected soft·
`ware, and more particularly relates to such a method in
`which unauthorized use is initially permitted, and in
`which the user is warned that the use is unauthorized 30
`and is encouraged to obtain a proper registration of the
`program before the program is disabled. This method
`has the dual advantages of providing protection for the
`software and ultimately causing its destruction if a
`proper license is not obtained, while at the same time 35
`encouraging the unauthorized user to register the soft·
`ware and commence licensed use, thus providing reve(cid:173)
`nue to the owner of the software. In this connection, it
`is noted that once the unauthorized user has com(cid:173)
`menced use of the program, he is likely to become 40
`somewhat dependent upon it, and is therefore more
`likely to decide to license the program, to the subse(cid:173)
`quent advantage of the owner of the program.
`In accordance with one embodiment of the invention,
`a method for preventing continued unauthorized use of 45
`protected software in a data processing system includ(cid:173)
`ing a clock, storage means and a counter comprises the
`steps of providing an initial time setting for said clock at
`the time of installation of the software in said data pro(cid:173)
`cessing system; providing a constant representing a 50
`predetermined amount of time in said storage means at
`the time of installation of the software; incrementing the
`counter each time that the protected software is oper(cid:173)
`ated; making a first determination whenever the pro(cid:173)
`tected software is operated as to whether the constant SS
`has been provided in the data processing system; mak(cid:173)
`ing a second determination as to whether the counter
`has reached a predetermined value; making a third de·
`termination as to whether the current time sensed from
`said clock exceeds the time when the software was 60
`installed by an amount equal to or greater than said
`constant; if any of the first, second or third determina(cid:173)
`tions are true, sending a warning message to the soft(cid:173)
`ware user indicating unauthorized use, setting the con(cid:173)
`stant to a predetermined multiple of the current time 65
`setting, and switching the counter to cause it to com(cid:173)
`mence decrementing from the setting at which it stood
`when switched; decrementing the counter each further
`
`BRIEF DESCRIPTION OF THE ORA WINGS
`FIG. 1 is a block diagram of a data processing system
`in which the method for software protection of the
`present invention may be' employed.
`FIG. 2 is a flow diagram of the registration installa(cid:173)
`tion phase of the method for software protection.
`FIGS. 3A and 38, taken together constitute a flow
`diagram of the registration checking phase of the
`method for software protection.
`FIG. 4 is a flow diagram of the registration defusing
`phase of the method for software protection.
`FIG. 5 is a diagram showing the relationship of pro(cid:173)
`grams 1 and 2 and associated files.
`FIG. 6 is a diagram showing the relationship of pro(cid:173)
`grams 3, 4 and 5 and associated files.
`FIG. 7 is a diagram showing the relationship of pro(cid:173)
`grams 6 and 7 and an associated file.
`
`DESCRIPTION OF THE PREFERRED
`EMBODIMENT
`Referring now to FIG. l, there is shown a block
`diagram of a data processing system 10 in which the
`method for software protection of the present invention
`may be employed. The data processing system com(cid:173)
`prises a processor 12 which includes a system timer or
`clock 14 and a counter 16, which is included in a mem(cid:173)
`ory section 17. The processor also includes storage
`capability, such as a disk storage unit, indicated gener(cid:173)
`ally by reference character 18, in which programs, files
`and other data may be stored, as well as an arithmetic
`unit, a control unit, and other units which are conven(cid:173)
`tional and not specifically illustrated. Data, including
`programs and files, may be loaded into the disk storage
`18 of the processor 12 by suitable means, such as a tape
`cartridge 20 or a flexible diskette 22. Output from the
`
`APPLE EXHIBIT 1012
`Page 9 of 13
`
`
`
`5,014,234
`
`25
`
`3
`processor 12 may be displayed on a system CRT 24 and
`may be provided in printed form by a system printer 26.
`The software which will now be described functions
`to prevent continued unauthorized use of protected
`software and to maintain control of sites where the S
`protected software is installed. The method of protec(cid:173)
`tion hereinafter described permits unauthorized copies
`of the protected software to be installed and to operate
`for a period of time. However if the user does not regis(cid:173)
`ter the protected software within a predetermined per- 10
`iod of time, the protected software will be destroyed.
`Before it is destroyed, the protected software will oper(cid:173)
`ate for another predetermined period of time, but will
`give a warning message each time that the protected
`software is executed, informing the user that the soft- 15
`ware should be registered.
`The method disclosed herein provides further protec(cid:173)
`tion to the protected software in that even if the- pro(cid:173)
`tected software is re-installed, as for example from flex
`disks or tape, on the same system in an unauthorized 20
`manner after having been destroyed, it still will not
`function properly. The only way that the protected
`software can be made to operate again is to register it
`and make payment for it.
`The present method employs a set of registration data
`which is appended to a selected system file which is
`resident in the operating system of the installation, and
`is not part of the software to be protected. Therefore
`reinstalling the software will not reset or re-initialize the 30
`registration data. Data relating to the timer and counter
`that were started when the protected software was
`originally installed will still be in effect even if the pro(cid:173)
`tected software is reinstalled.
`For purposes of illustration, the operating system file 35
`containing the registration data is designated as the
`SFILE. A suitable file is one which is relatively small,
`which is used in many other routines, and which is
`therefore unlikely ever to be deleted.
`The registration data may comprise various types of 40
`information. In the illustrated embodiment, a first item
`may comprise a time value, indicating the length of
`time, preferably in seconds, between a given reference
`date and the time when the protected software is in(cid:173)
`stalled. A second item may comprise a counter number 45
`which is initially zero and which is incremented each
`time that the protected program is run and the couQter
`16 is operated. A third item may comprise a constant
`which represents the number of seconds in a predeter(cid:173)
`mined time period, which is one hundred twenty days in so
`the illustrated embodiment. These data will subse(cid:173)
`quently be described in greater detail. The registration
`data, in the illustrated embodiment, may consist of three
`numbers, each containing four bytes of information,
`with eight bits being included per byte.
`The registration data will be tested and the counter 16
`will be incremented once each time that the protected
`software, or any module thereof, is operated, until ei(cid:173)
`ther a predetermined number of counts is reached, or
`until a given period of time from the installation time 60
`expires. When the first of these two possible occur(cid:173)
`rences takes place, the counter 16 is then caused to
`commence decrementing once for each time that the
`protected program is operated, and the registration data
`continues t.:> be tested for each operation of the pro- 6S
`tected program, until the counter 16 reaches zero or
`some otht!r predetermined number, at which time the
`protected software may be disabled or destroyed.
`
`ss
`
`4
`When the protected software is initially loaded into
`the system via the tape cartridge 20 or the diskette 22,
`the registration data is added to the preselected system
`file SFILE. At this time, a message (see FIG. 5) is sent
`to the operator via the CRT 24 and the printer 26 (if one
`is installed) with information regarding registration of
`the software. The operator must acknowledge this mes(cid:173)
`sage before he is allowed to continue with the installa(cid:173)
`tion. The information given states the software serial
`number, and what information to send, and to whom it
`should be sent.
`When the proprietor of the protected software re(cid:173)
`ceives the registration data, a "defuse" number is gener(cid:173)
`ated from the software serial number and is returned to
`the user along with information as to how to defuse the
`checking method and thus prevent destruction of the
`protected software. If the protected software is regis(cid:173)
`tered within the first prescribed period of time, the user
`will have no way of knowing from the software that the
`checking method exists or is present in the software.
`Sending of the required registration information to
`the proprietor of the protected software by the user
`will, of course, have the desired effect of informing the
`proprietor of the identity of this user of the protected
`software, and thus enab • ..: the proprietor to charge a
`licensing fee for the software to the user, thus realizing
`revenue which otherwise might not be obtained.
`In the illustrated embodiment, the registration data
`consists of twelve bytes, comprising three integers, or
`"arguments", which are hereafter referred to as argl,
`arg2 and arg3. These are defined as follows:
`argl-Current time (in seconds elapsed since 00:00:00
`Jan. l 1970 GMT). This number is returned from
`the system "time" function. This gets encrypted
`and becomes the installation serial number.
`arg2-A counter that is initially zero. This counter is
`incremented each time the registration data is
`tested. Once the initial warning has been given
`(after a predetermined time has elapsed), this
`counter is decremented each time the registration
`data is tested. When the count becomes zero, the
`system self destruction is scheduled.
`arg3-A constant that represents the number of sec(cid:173)
`onds in 120 days. This value is arbitrary and should
`be selectively chosen for each software system on
`which it is installed. This number is hereafter re(cid:173)
`ferred to, as CONSTI.
`Arg3 will be modified to the following values at the
`times given.
`CONST!-This means that the registration infor(cid:173)
`mation has been installed, and has not yet
`reached the expiration values specified.
`CONST]+ 1 - This means that the registration
`data has been installed and subsequently defused.
`CONSTl•3-This means that the registration data
`has been installed, and the timer and/or counter
`has expired. This is a flag to begin decrementing
`the counter rather than incrementing it when the
`software to be protected is executed, and to start
`giving warning messages.
`All software modules to be protected will test the
`registration data in accordance with the following steps:
`1. Checking the arg3 to see if the registration data has
`been installed.
`2. Checking the current time against argl to see if 120
`days have elapsed.
`3. Incrementing arg2 and checking to see if it has
`reached a value of 240.
`
`APPLE EXHIBIT 1012
`Page 10 of 13
`
`
`
`5,014,234
`
`6
`5
`CONST +l, then it increments the counter 16 and
`4. Checking arg3 to see if it is equal to (CONSTl*3).
`If any of tests one through three fail, a warning mes-
`checks to see if the threshold or maximum allow-
`sage is sent to the operator, and arg3 is set to
`able count for the counter has been exceeded.
`(CONST1*3). If test four is true, arg2 is decremented
`3. It also compares current time with installation
`time.
`and tested. When arg2 reaches zero, destruction is S
`4. If either 2 or 3 above fails, and the counter 16 has
`scheduled. The scheduled warning message appears on
`not been decremented to 0, it is decremented by
`the system console and on the system printer.
`one count, and then FILE D is copied, decrypted
`During installation, program PROGi is executed.
`and executed as PROG4. If the counter 16 has been
`One of its functions is to read the last four bytes of
`decremented to o, then FILE A is copied, de-
`SFILE (arg3) and test for previous installation of the 10
`registration data. If the last four bytes are CONST!,
`crypted and executed as PROGS.
`Program 4, designated as PROG4, reads file FILE E
`CONSTl+l, or CONST1*3 then security has been pre-
`and writes it to the console, then it concatanates "serial"
`viously installed, and the timers/counters are not dis-
`turbed. If the last byte is none of these, then the security
`to FILE E and prints it. It then writes a warning mes-
`feature is installed.
`IS sage to the system printer and to the system display.
`The various modules or programs which are em-
`PROG4 then removes files
`that were decrypted.
`ployed to provide security for the program to be pro-
`PROG4 is loaded into the system when the software to
`tected will now be described. The relationship of these
`be protected is installed. PROG4 is loaded as an en-
`programs with respect to each other and to certain files
`containing specified information is shown in FIGS. 5, 6 20 crypted data file FILE D. It is decrypted and operated
`by PROGS.
`and 7. The manner in which the various programs inter-
`act to provide the method which is the subject of this
`Program 5, designated as PROGS, destroys critical
`application will be subsequently described, and is
`files in the software being protected by deleting all files
`shown in the flow diagrams of FIGS. 2, 3A, 3B and 4.
`that contained the installing checking program PROG3.
`Program l, designated as PROGi, is loaded into the 2s PROGS is loaded into the system when the software to
`system memory section 17 and the disk storage unit 18
`be protected is installed. PROGS is loaded as an en-
`crypted data file FILE A. It is decrypted and operated
`and is operated when the software to be protected is
`initially installed on the system. PROGi deletes itself
`by PROG3.
`from memory and disk after it has operated success-
`Program 6, designated as PROG6, is operated on
`fully. PROGi performs the following steps:
`30 instructions from the proprietor after the user has sent
`1. Reads and tests SFILE to see if security is already
`in a registration number. PROG6 prompts the operator
`to enter the defuse number received from the propri-
`installed.
`2. If installed, skips steps 3 to 5 below.
`etor. PROG6 receives this number string as a parameter
`3. If not installed:
`and writes it to FILE F. PROG6 unpacks, reverses and
`35 executes FILE C. PROG6 is loaded into the system
`a. SFILE is copied for preservation.
`b. Writes_CONSTI, "time", and 0 as integers to the
`when the software to be protected is installed.
`last twelve bytes of SFILE.
`Program 7, designated PROG7, reads file FILE F,
`c. Creates a file called FILE G that contains the
`decodes it and checks SFILE to see if this is the correct
`number for the current system. If it is, the system is
`encrypted serial number.
`4. Executes PROG2 and then continues with PROGi. 40 defused. If it is not, then FILE B is copied, decrypted
`S. Creates a file called "serial" that contains the sys-
`and executed. PROG7 is loaded into the system when
`the software to be protected is installed. PROG7 is
`tern serial number and a message telling the user to
`loaded as an encrypted data file FILE c. It is decrypted
`register the system by sending the serial number
`and installation location to a specified name and
`and operated by PROG6.
`address. The operator must acknowledge the 4S
`Files used by the security system comprise the fol-
`screen before continuing. This file remains in the
`lowing:
`system in case the user does not register the system.
`SFILE is an arbitrary system file chosen to be the
`It will be available later to reference.
`bearer of the registration data. The selected file should
`Program 2, designated as PROG2, is a distraction file
`be one that will always reside in the system either in
`that serves no purpose except to distract or mislead 50 memory or on disk.
`anyone attempting to violate the registration security.
`PROG2 creates a second distraction file FILE I that is
`The "serial" file remains on the system and is in a
`left in the system to further distract anyone tampering
`readable printable format. It contains the following
`information:
`with the security. The contents of this file is arbitrary,
`but might contain some misleading messages. PROG2 is ss
`I. The system serial number.
`loaded into the system when the software to be pro-
`2. Registration information required by the propri-
`tected is initially loaded into the system. PROG2 re-
`etor.
`mains on the system disk.
`3. Name and address to send registration information.
`Program 3, designated as PROG3, is an executable
`FILE A is an encrypted file that becomes PROGS to
`file that is included in all modules of every program that 60 remove protected software modules after the timer 14
`is to be protected, and is operated each time that the
`or counter 16 expires.
`program to be protected is operated. It does the follow-
`FILE B is an encrypted file that becomes an error
`ing:
`message that the defusing process has failed.
`1. Reads the last twelve bytes of SFILE to see if the
`FILE C is an encrypted file that becomes a program
`security feature is installed. If it is not installed, 6S to execute PROG7.
`PROG3 is exited.
`FILE D is an encrypted file that becomes PROG4
`2. If the security feature is installed and arg3 does not
`that displays an error message stating that the system
`equal CONST*3, and arg3 does not equal
`was not properly registered.
`
`APPLE EXHIBIT 1012
`Page 11 of 13
`
`
`
`5,014,234
`
`7
`FILE E is a print message file created by PROG3. It
`contains the registration serial number and a warning
`that the system has not been registered.
`FILE Fis created by PROG6 and is read by PROG7.
`It contains the encrypted defuse number.
`·
`FILE G is a print/display file containing the serial
`number. It is created by PROG3 and deleted by
`PROGS.
`FILE H is a display message file created by PROG3.
`It contains the registration serial number and a warning 10
`that the system has not been registered.
`FILE I is a file created by PROG2 to distract or
`mislead anyone trying illegally to defuse the security
`system.
`The flow diagrams of FIGS. 2, 3A and 38, and 4 15
`show the logical flow of the three phases of the registra(cid:173)
`tion method. The three phases are installation, checking
`and defusing.
`Shown in FIG. l is the registration installation. This
`program PROGi (block 28) is executed during installa- 20
`tion of the software to be protected. As represented in
`blocks 30 and 32, the program examines SFILE and
`checks to see whether or not the last twelve bytes of
`SFILE contain the registration data, and whether the
`last four bytes contain CONSTI, CONST +l or 25
`CONSTI times three. If so, the program proceeds to the
`exit designated block 34. If not, PROGl is executed and
`FILE I is created, as represented in block 36. It should
`be noted that this could be omitted or placed anywhere
`else in the system, since it is for the purpose of distrac- 30
`tion only.
`Next, as represented in block 38, the registration is
`installed, and the system serial number is generated and
`i.s written to FILE G. The last twelve bytes of SFILE
`are written to be argl, arg2 and arg3, as described 35
`above.
`Finally, as represented in block 40, the file "serial" is
`created, and a message is displayed and/or printed,
`telling the user to register his installation with the pro(cid:173)
`prietor, and telling him what information to send and 40
`where to send it. Following this, PROGi proceeds to
`the exit, represented by block 34.
`Shown in FIGS. 3A and 3B is the registration check(cid:173)
`ing. Each module of the protected program that checks
`the registration data performs the sequence described 45
`below, which is contained in program PROG3 (block
`42).
`As represented in block 44, the program first exam(cid:173)
`ines SFILE to see if the registration is installed, and
`then (block 46), if the registration is not installed, or if 50
`thresholds are exceeded, exits (block 48). If arg3 equals
`CONST! or CONSTI +I or CONSTl*3, the process
`proceeds to block 50, where it is determined whether
`arg3 equals CONSTl*3. If so, the counter is decre(cid:173)
`mented (block 54). If not, the counter is incremented 55
`one count for each operation of the program (block 52)
`until it reaches a predetermined arbitrary value (240 in
`the illustrated embodiment) and then commences to
`decrement (block 54). Next, the counter is checked to
`see if it has previously exceeded 240. If so, the process 60
`proceeds to block 64 to see if the count is currently
`zero. If the counter has never incremented past 240,
`argl is compared to current time (block 58), and a deter(cid:173)
`mination is made (block 60) as to whether 120 days have
`passed. The value of 120 days is a predetermined arbi- 65
`trary value selected in the illustrated embodiment. If
`120 days have not passed, the program is exited, as per
`block 62. If 120 days have passed, the process continues
`
`8
`to block 64, in which it is determined whether the
`counter has decremented to zero. If the counter has not
`decremented to zero, a warning message is given to the
`system CRT and/or to the printer. FILE D is copied
`5 and decrypted to c:reate PROG4 (block 70). Display file
`FILE H and print file FILE E are created (block 72).
`The program PROG4 is then executed (block 74),
`