throbber
United States Patent c191
`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),
`

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket