DE69326119T2 - Überprüfung von Softwareprogrammen - Google Patents

Überprüfung von Softwareprogrammen

Info

Publication number
DE69326119T2
DE69326119T2 DE69326119T DE69326119T DE69326119T2 DE 69326119 T2 DE69326119 T2 DE 69326119T2 DE 69326119 T DE69326119 T DE 69326119T DE 69326119 T DE69326119 T DE 69326119T DE 69326119 T2 DE69326119 T2 DE 69326119T2
Authority
DE
Germany
Prior art keywords
program
disk
file
application
software program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69326119T
Other languages
English (en)
Other versions
DE69326119D1 (de
Inventor
Jitendra Kumar Singh
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Co filed Critical Hewlett Packard Co
Application granted granted Critical
Publication of DE69326119D1 publication Critical patent/DE69326119D1/de
Publication of DE69326119T2 publication Critical patent/DE69326119T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/80Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in storage media based on magnetic or optical technology, e.g. disks with sectors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/106Enforcing content protection by specific content processing
    • G06F21/1063Personalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/007Encryption, En-/decode, En-/decipher, En-/decypher, Scramble, (De-)compress
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2135Metering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2137Time limited access, e.g. to a computer or data

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Storage Device Security (AREA)

Description

  • Diese Erfindung bezieht sich auf Computer mit Plattensystemen und insbesondere auf die Überprüfung vor der Ausführung von Softwareprogrammen, um eine nichtautorisierte Verwendung oder Modifikationen der Plattendateien zu verhindern. Die Verschlüsselung vor dem Speichern des Programms auf einer Platte ist der Gegenstand der Teilpatentanmeldung.
  • Vor 15 Jahren wurden Computer bei spezialisierten Anwendungen verwendet, wobei dieselben Programme verwendeten, die spezifischerweise entworfen waren, um eine spezialisierte Aufgabe durchzuführen. Die wenigen Computerbetreiber waren für die Verwendung von Computern hoch ausgebildet, und es gab sehr wenige Leute, die zu Hause Computer besaßen. Heutzutage besitzen Millionen von Leuten Computer zu Hause und Büro. Was früher ein kleiner Markt für Computer war, ist nun ein großer.
  • Mit dem Wachstum des Softwareprogrammarkts kam die Notwendigkeit für eine Massenverteilung von Softwareprogrammen auf. Da viele der Programme, die für Personalcomputer entworfen sind, teuer sind, wollen viele Kaufinteressenten dazu in der Lage sein, das Programm zu testen, bevor sie es kaufen. Ferner wollen sie das Programm auf ihrem Computer daheim oder im Büro testen. Die Lieferanten von Softwareprogrammen würden ihre Software gerne weit verteilen, damit die Käufer dieselben testen, aber es muß natürlich eine gewisse Einrichtung vorhanden sein, um die Leute vom Kopieren abzuhalten und eine unbegrenzte Verwendung des Programms zu verhindern. Zusätzlich zu dem Schützen des Programms muß das Einkaufen der Software für den Käufer so bequem wie möglich sein.
  • Herkömmliche Verfahren sind entworfen worden, um zu ver suchen, die Software zu schützen. Dieselben stießen jedoch sowohl bei den Softwarelieferanten als auch bei den Benutzern auf keine Akzeptanz. Einige der herkömmlichen Verfahren erforderten eine zusätzliche Hardware, was die Kosten des Produkts erhöhte und die Verwendung des Produkts für den Verwender unbequem machte. Andere Verfahren erforderten es, daß sich eine spezielle Diskette in einem Plattenlaufwerk befindet, damit die Software funktioniert. Den Benutzern mißfiel es jedoch, die Disketten nachverfolgen zu müssen.
  • Was in der Industrie gebraucht wird, ist ein Verfahren zum Verteilen einer Probesoftware an Benutzer, das es ermöglicht, daß die Benutzer die Software bequem testen, während zur gleichen Zeit die Interessen der Softwareentwickler geschützt sind. Ferner besteht eine Notwendigkeit für ein Verfahren, um es zu ermöglichen, daß die Käufer die Software einfach einkaufen können.
  • Die GB-A-2238408 offenbart eine Speichervorrichtung mit einer Einbauschaltung, die die Anzahl von Malen begrenzt, wie oft Kopien von einer geschützten Software, die in der Vorrichtung gespeichert ist, erzeugt werden können. Ein Kennzeichenausdruck wird jedesmal modifiziert, wenn die geschützte Software kopiert wird.
  • Die FR-A-2623640 offenbart eine Vorrichtung zum Verhindern des Betriebs eines Betrugsprogramms, die eine Codiereinrichtung, eine erste und eine zweite Hilfsdatei, die auf einer Platte gespeichert sind, und eine Überprüfungseinrichtung aufweist, die den Inhalt der Platte in zwei Sätze von verwandten Teilen unterteilt. Die Platte weist verschiedene Dateien und eine Datei-Zuweisungstabelle auf, die in vorbestimmten Positionen auf derselben in Sektoren von konzentrischen Spuren positioniert ist. Es ist eine Liste von Dateien, die geschützt werden sollen, umfaßt.
  • Der Artikel "Conceptual view of MS-DOS file system security" in Wirtschaftsinformatik Bd. 33, Nr. 6, Dezember 1991, Wiesbaden, DE, Seiten 526-531; R. Posch u. a. prüft Maßnahmen für eine Computerdateisystemsicherheit nach. Das Vorsehen einer Schlüsselverwaltungsdatei ist mit einer zusätzlichen Verschlüsselungssteuerungstabelle offenbart.
  • Gemäß der vorliegenden Erfindung wird ein Verfahren geschaffen, durch das ein Softwareprogramm vor der Ausführung überprüft wird, wobei das Softwareprogramm eine ursprüngliche Speicherungsposition und eine augenblickliche Speicherungsposition auf einer Festplatte mit Sektoren aufweist, wobei das Verfahren folgende Schritte aufweist: Bestimmen der augenblicklichen Sektorposition des Softwareprogramms auf der Festplatte; Bestimmen der ursprünglichen Sektorposition des Softwareprogramms auf der Festplatte; Durchführen eines Überprüfungsprozesses mit einem Bestimmen, ob die ursprüngliche und die augenblickliche Sektorposition des Softwareprogramms dieselben sind; und Bewirken, daß das Softwareprogramm aufgeführt wird, falls der Überprüfungsprozeß erfolgreich ist.
  • Die vorliegende Erfindung schafft ein Verfahren, durch das Probeversionen von Softwareprogrammen zu kaufinteressierten Benutzern weit verteilt werden können, während zur gleichen Zeit ein Kopieren oder eine unbegrenzte Verwendung der Programme verhindert wird. Die Benutzer sind folglich in der Lage, die Programme zu testen, sowie sie es tun würden, falls sie die Programme gekauft hätten. Ferner schafft die vorliegende Erfindung einen bequemen Weg für die Benutzer, um die Programme zu kaufen, ohne ihr Zuhause oder ihr Büro zu verlassen.
  • Bei einem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung wird dem Benutzer eine verschlüsselte Version des Anwendungsprogramms, das der Benutzer anfordert, und ein Installationsprogramm gegeben. Das Installationsprogramm verschlüsselt, neu benennt und lädt ferner das Anwendungsprogramm auf eine Festplatte in dem Computersystem des Benutzers. Zusätzlich erzeugt das Installationsprogramm eine oder mehrere zufällig benannte Dateien, die ebenso auf die Festplatte geladen werden. Jede der Zufallsdateien enthält die Position des Anwendungsprogramms, der anderen Zufallsdateien und seiner eigenen Plattenposition auf der Festplatte. Die Zufallsdateien enthalten ferner Informationen über die Anzahl von Malen, wie oft der Benutzer das Anwendungsprogramm ausgeführt hat.
  • Das Installationsprogramm erzeugt ferner ein Probeprogramm, dem der Name des Anwendungsprogramms gegeben wird, bevor das Anwendungsprogramm neu benannt worden ist. Dieses Probeprogramm ist das Programm, das der Benutzer ausführt, wenn der Benutzer das Anwendungsprogramm laufen lassen will. Das Probeprogramm testet, um zu erkennen, ob das Anwendungsprogramm und die Zufallsdateien immer noch an denselben absoluten Plattenpositionen positioniert sind, und testet, um zu erkennen, ob der Benutzer die erlaubte Anzahl von Malen überschritten hat, wie oft das Anwendungsprogramm laufen kann.
  • Falls das Probeprogramm bestimmt, daß die Programme nicht verschoben worden sind, und der Benutzer immer noch autorisiert ist, das Programm zu verwenden, lädt das Probeprogramm das Anwendungsprogramm und führt dasselbe aus. Bevor jedoch das Anwendungsprogramm ausgeführt wird, wird dem Benutzer die Gelegenheit gegeben, ein Paßwort einzugeben, um alle Programmschutzmerkmale zu beseitigen. Typischerweise wird der Benutzer eine Telefonnummer anrufen und das Anwendungsprogramm kaufen, wobei ihm zu diesem Zeitpunkt das Paßwort gegeben wird.
  • Die vorliegende Erfindung sperrt das Anwendungsprogramm bezüglich der spezifischen Festplatte, auf die dieselbe geladen ist. Da das Probeprogramm weiß, wo das Anwendungsprogramm und die Zufallsdateien positioniert sein sollten, wird jeder Versuch, eine Kopie des Anwendungsprogramms oder der Zufallsdateien herzustellen, fehlschlagen, da sich deren Positionen aufgrund der inhärenten Merkmale des Microsoft- Diskettenbetriebssystems (MS-DOS; MS-DOS = Microsoft Disk Operating System) ändern werden. Für einen typischen Benutzer mit vielen auf der Festplatte gespeicherten Dateien würde das Identifizieren der Zufallsdateien ferner problematisch sein. Zusätzlich erzeugt das Probeprogramm jedesmal, wenn das Anwendungsprogramm ausgeführt wird, neue Zufallsdateien mit zufälligen Namen, so daß jeder Versuch, die alten Zufallsdateien zu kopieren, nicht wirksam sein wird, um die Schutzmerkmale abzuwehren.
  • Dieses neue und neuartige Programmschutzverfahren ermöglicht es dem Benutzer, ein Anwendungsprogramm zu testen, bevor dasselbe gekauft ist, während die Rechte der Softwarelieferanten geschützt sind.
  • Fig. 1A stellt das MS-DOS-Verzeichnissystem und das FAT- (FAT = Dateizuordnungstabelle) Dateisystem dar.
  • Fig. 1B stellt die Organisation der zwei FAT und des Verzeichnisses auf einer einzigen Festplatte dar.
  • Fig. 2 ist eine graphische Ansicht des Speicherungsbereichs einer einzigen Festplatte.
  • Fig. 3 ist ein Flußdiagramm der Schritte 1-3 des Anwendungsprogramm-Installationsverfahrens.
  • Fig. 4 ist ein Flußdiagramm der Schritte 4-6 des Anwendungsprogramm-Installationsverfahrens.
  • Fig. 5 ist ein Flußdiagramm der Schritte 7-9 des Anwendungsprogramm-Installationsverfahrens.
  • Fig. 6 ist ein Flußdiagramm der Schritte 10 und 11 des Anwendungsprogramm-Installationsverfahrens.
  • Fig. 7 ist ein Flußdiagramm der Schritte 12-14 des Anwen dungsprogramm-Installationsverfahrens.
  • Fig. 8 ist ein Flußdiagramm der Schritte 1 und 2 des TSR- Programm-Ausführungsverfahrens.
  • Fig. 9A ist ein detailliertes Flußdiagramm des TSR-Programm-Ausführungsprozesses.
  • Fig. 9B ist eine Fortführung des Flußdiagramms, das in Fig. 9A gezeigt ist.
  • Fig. 10 ist ein Übersichtflußdiagramm des Anwendungsprogramm-Ausführungsprozesses.
  • Fig. 11A ist ein detailliertes Flußdiagramm des Anwendungsprogramm-Ausführungsverfahrens.
  • Fig. 11B ist eine Fortführung des Flußdiagramms, das in Fig. 11A gezeigt ist.
  • Fig. 12 ist ein Fortführung des Flußdiagramms von Fig. 11A.
  • Fig. 13 ist ein Flußdiagramm des Validate-Programms.
  • Diese Erfindung macht es möglich, Computerdateien bezüglich der Festplatte zu sperren. Das Verfahren der vorliegenden Erfindung macht es möglich, zu erfassen, ob eine Datei über sich selbst kopiert worden ist oder nicht. Die Motivation, Dateien bezüglich einer Computerplatte zu sperren, tritt in Situationen auf, bei denen einige Zählinformationen auf der Platte gespeichert werden müssen und bei denen es einigen Anreiz für Benutzer gibt, es zu verhindern, daß die Zählinformationen, inkrementiert werden. In dem Fall der Anwendungssoftware, die auf einer Probebasis verteilt wird, d. h. bei der die Software eine vordefinierte Anzahl von Malen ausgeführt werden kann, können beispielsweise die Probezählwerterinformation auf der Festplatte gespeichert sein. Ohne ein Sperreh dieser Datei ist es für einen Benutzer möglich, eine ursprüngliche Kopie der Datei beizubehalten (wobei der Probezähler auf den maximal erlaubten Zählwert eingestellt ist) und diese jedesmal auf die Festplatte zu kopieren, wenn er die Anwendung laufen lassen will, wobei wirksam verhindert wird, daß die Probezählwertinformationen dekrementiert werden.
  • Das Sperren des Anwendungsprogramms weist folgenden Prozeß auf:
  • a. Erzeugen von mehreren Dateien, wobei die erste einen festen Namen aufweist und die andere (n) zufällige Namen aufweisen
  • b. Speichern des Kopfs, des Zylinders, der Sektorinformationen für jede der Dateien in jeder der Dateien zusammen mit den Zählwertinformationen.
  • c. Speichern des Namens aller Dateien in der ersten Datei mit dem festen Namen
  • c. Verschlüsseln aller Dateien
  • Falls jemand die Datei (die die Zählwertinformationen enthält) speichert und daraufhin dieselbe zurück zu der Platte kopiert, bevor die Probeanwendung ausgeführt wird, würde dies mit diesen Operationen aufgrund der Tatsache erfaßt werden, daß die Kopf-, Zylinder- und Sektorinformationen, die in die Datei geschrieben sind, nicht mehr mit dem tatsächlichen Kopf, Zylinder und Sektor, der durch die Datei besetzt ist, übereinstimmen würden. Jegliches Schema, das durch den Benutzer verwendet wird, um die Datei zurück zu derselben physischen Position auf der Platte neu zu positionieren, wird ferner aufgrund dessen fehlschlagen, daß ein Satz von Dateien mit zufälligen Namen vorhanden ist. Da die Dateien jedesmal, wenn die Probeanwendung ausgeführt wird, zufällig erzeugt werden, würde es bei den meisten Systemen mit vielen Dateien sehr schwierig sein, zu identi fizieren, welcher Satz von Dateien erzeugt wurde, wodurch die Sicherheit des Schutzverfahrens erhöht wird.
  • MS-DOS und Festplattendateiverwaltung
  • Während das Verfahren der vorliegenden Erfindung auf viele Betriebssysteme anwendbar ist, wird ein bevorzugtes Ausführungsbeispiel beschrieben, als ob es mit dem MS-DOS-Betriebssystem implementiert sei. Das MS-DOS wird ferner unter anderen Markennamen auf dem Markt gehandhabt. Das IBM- Personalcomputerplattenbetriebssystem (PC-DOS; PC-DOS = Personal Computer Disk Operating System) ist mit geringfügigen Ausnahmen beispielsweise ein neubenanntes MS-DOS. Der Betrieb des MS-DOS/PC-DOS (DOS; DOS = Disk Operating System = Plattenbetriebssystem) wird von Fachleuten gut verstanden und die technischen Merkmale des Betriebssystems sind in der IBM- "Disk Operating System Technical Reference" Version 5.00 dokumentiert. Zusätzliche Betriebssysteminformationen sind in "The MS-DOS Encyclopedia" veröffentlicht, veröffentlicht durch Microsoft Press, Redmond, Washington, 1988.
  • Da ein Merkmal der vorliegenden Erfindung das Sperren des Anwendungsprogramms und anderer Dateien bezüglich der Festplatte ist, ist ein Grundverständnis einer Festplatte und der Dateistruktur des MS-DOS nützlich. Eine Fest- (feste) Platte weist typischerweise mehrere Platte-Plattenscheiben auf. Jede Plattenscheibe ist mit einem magnetischen Material beschichtet, und typischerweise ist ein magnetischer Plattenkopf pro Plattenscheibeoberfläche vorgesehen, um die Daten auf die Plattenscheibenoberfläche aufzuzeichnen. Jeder der Plattenköpfe ist an einem gemeinsamen Arm angebracht, der in diskreten Inkrementen bewegt wird, um die Köpfe auf einen bestimmten Plattenzylinder zu positionieren. Ein Zylinder weist alle Plattenspuren auf, die unter einem Druckkopf linienhaft angeordnet sind. Falls beispielsweise eine Platte zwei Plattenscheiben und folglich vier Platten köpfe aufweist, würden vier Spuren vorhanden sein, die zusammen einen Zylinder bilden. Jede Spur ist in Sektoren unterteilt, wobei jeder Sektor mehrere Bytes von Daten speichert. Die Anzahl von Sektoren ist bestimmt, wenn die Platte durch ein Formatierprogramm formatiert ist.
  • Eine Zuweisung eines Plattenplatzes für eine Datei (in dem Plattendatenbereich) wird lediglich durchgeführt, wenn es notwendig ist. Das heißt, daß der Datenplatz nicht vorzugewiesen ist. Der Platz wird in Zuordnungseinheiten (Einheit einer Zuweisung) zugewiesen, wobei eine Zuordnungseinheit ein oder mehrere aufeinanderfolgende Plattensektoren ist. Zuordnungseinheiten für eine Datei sind aneinander "gekettet" und werden durch Eintragungen in einer Dateizuweisungstabelle (FAT) nachverfolgt.
  • Die Zuweisungseinheiten sind auf der Platte angeordnet, um die Plattenkopfbewegung zu minimieren. Der gesamte Platz auf einer Spur (oder einem Zylinder) wird zugewiesen, bevor zu der nächsten Spur fortgefahren wird. Dies wird durch Verwenden der aufeinanderfolgenden Sektoren auf dem Kopf mit der niedrigsten Nummer und daraufhin aller Sektoren auf dem nächsten Kopf usw. durchgeführt, bis alle Sektoren auf allen Köpfen des Zylinders verwendet sind. Der nächste Sektor, der verwendet werden soll, wird daraufhin der Sektor 1 auf dem Kopf 0 des nächsten Zylinders sein.
  • Für eine Fest- (feste) Platte ist die Größe der FAT und des Verzeichnisses bestimmt, wenn ein Plattenformatierprogramm die Platte initialisiert, wobei dieselben auf der Größe der DOS-Partition basieren. Um alle Daten zu lokalisieren, die einer speziellen Datei zugeordnet sind, die auf der Festplatte gespeichert ist, wird die Anfangszuordnungseinheit der Datei aus einem Verzeichniseintrag erhalten, wobei daraufhin in der FAT-Tabelle nachgeschlagen wird, um die nächste Zuordnungseinheit, die der Datei zugeordnet ist, zu lokalisieren. Die FAT-Tabelle ist eine verkettete Liste von Zuordnungseinheiten, derart, daß jede 16-Bit-FAT-Eintragung für eine Datei auf die nächste nachfolgende Zuordnungseinheit zeigt, die für diese Datei verwendet wird. Die letzte Eintragung für eine Datei in der FAT weist eine Zahl auf, die anzeigt, daß keine Zuordnungseinheiten mehr folgen. Diese Zahl kann FFF8 bis FFFF (Basis 16) einschließlich sein. Die Größe einer Zuordnungseinheit ist definiert, wenn die Platte formatiert ist, und kann von 1 bis 128 Sektoren reichen. Jeder Sektor einer FAT kann auf 256, 512, ... oder 32768 Sektoren zeigen, abhängig von der Anzahl von Sektoren in einer Zuordnungseinheit. Die Anzahl von Sektoren, auf die ein FAT-Sektor zeigen kann, wird als "Spurgruppe" bezeichnet. Aus Redundanzgründen sind zwei identische FAT auf der Platte vorgesehen.
  • Fig. 1A zeigt eine Verzeichniseintragung 2, die aus 32 Datenbytes besteht. Der Name der Datei und dessen Erweiterung sind in den ersten 11 Bytes der Verzeichniseintragung 2 gespeichert, wobei ein Dateiattributbyte 6 vorgesehen ist. Definitionsgemäß sind 10 Bytes (8) für eine zukünftige Verwendung reserviert, und 2 Bytes sind vorgesehen, um Zeitinformationen (10) und Datuminformationen (12) zu speichern. Ein Zuordnungseinheitbyte (14) zeigt auf die erste Zuordnungseinheit der Sektoren, die verwendet werden, um die Dateiinformationen zu speichern, wobei das Byte (14) auf die erste Eintragung der FAT-Tabelle (16) zeigt, die der Datei zugeordnet ist. Die letzten vier Bytes (18) der Verzeichniseintragung 2 werden verwendet, um die Größe der Datei zu speichern.
  • Ein 16-Byteabschnitt einer FAT-Tabelle (20) ist dargestellt. Die ersten vier Bytes (21) speichern Systeminformationen. Die Bytes 4 und 5 (16) sind die anfänglichen Bytes der FAT (20), die verwendet wird, um die Dateininformationen zu verfolgen. Die erste Zuordnungseinheit für einen Datenplatz auf allen Platten ist die Zuordnungseinheit "02". Die Bytes 4 und 5 (16) sind folglich der ersten Zuordnungseinheit der Plattensektoren "02" zugeordnet, die verwendet werden, um die Dateininformationen zu speichern. Die FAT-Bytes 6 und 7 (22) sind der Zuordnungseinheit 03... und die Bytes 14 und 15 (24) sind der Zuordnungseinheit 07 zugeordnet.
  • Dieses Beispiel stellt dar, wie Sektoren positioniert werden, die einer Datei zugeordnet sind, auf die in der Verzeichnis Bezug genommen wird. Die Zuordnungseinheitinformationen (14) in dem Verzeichnis (2) zeigen auf die Zuordnungseinheitzahl "02". Die Sektoren in der Zuordnungseinheit "02", nicht gezeigt, enthalten den ersten Teil der Daten für die Datei, auf die Bezug genommen wurde. Als nächstes wird auf die FAT-Tabelle Bezug genommen, um zu erkennen, ob zusätzliche Zuordnungseinheiten verwendet werden, um die Dateiinformationen zu speichern. Auf die FAT-Bytes 4 und 5 (16) wurde durch die Verzeichniseintragung (14) gezeigt, wobei die Informationen, die in den Bytes 4 und 5 (16) gespeichert sind, zu der nächsten Zuordnungseinheit zeigen, die für die Datei verwendet wird. Hier ist die nächste Zuordnungseinheit "05". Die Zuordnungseinheit "05" enthält somit den nächsten Teil der Daten für die Datei, auf die Bezug genommen wird. Die FAT-Bytes 10 und 11 (26) enthalten eine Ende-der-Datei-Zahl "FFFF", die anzeigt, daß es keine weiteren Zuordnungseinheiten gibt, die der Datei, auf die Bezug genommen wird, zugeordnet sind. Alle Informationen, die der Datei, auf die Bezug genommen wird, zugeordnet sind, waren in den Zuordnungseinheiten "02" und "05" auf der Platte umfaßt.
  • Figur iß zeigt eine schematische Ansicht der Organisation der zwei FAT und des Verzeichnisses auf einer einzigen Platte. Die Platte 102 weist eine äußere Spur 104 auf, die die Informationen der ersten FAT enthält. Die nächstinnere Spur 106 enthält die Informationen der zweiten FAT. Die nächstfolgende Spur 108 in Richtung der Mitte der Platte enthält die Verzeichnisinformationen. Die äußerste Spur (Spur 0) der Platte, die nicht gezeigt ist, ist für die Speicherung der Computer-urlade-Befehle reserviert.
  • Fig. 2 zeigt eine graphische Ansicht des Speicherungsbe reichs der Platte in Fig. 1. Die Informationen für die FAT 104 und 106 sind in der ersten und der zweiten Spur, die gezeigt sind, gespeichert, wobei die Informationen für das Verzeichnis 108 in der dritten gezeigten Spur gespeichert sind. Der restliche Speicherbereich der Platte 202 ist zum Speichern von Dateiinformationen verfügbar. Beginnend mit Spur 1 Sektor 1 verwendet das Betriebssystem bis zu 128 aneinandergrenzende Sektoren für die erste Kopie der FAT 1 (104). Das Betriebssystem weist daraufhin einen zusätzlichen, aneinandergrenzenden Duplikatplatz für die FAT 2 (106) zu. Nachdem beide FAT zugewiesen worden sind, weist das Betriebssystem die nächsten 32 aneinandergrenzenden Sektoren für das Wurzelverzeichnis 108 zu.
  • Die einfache Platte, die in Fig. 1 und Fig. 2 dargestellt ist, weist eine einzige Aufnahmeoberfläche auf, und würde lediglich einen einzigen Aufnahmekopf aufweisen. Eine Spur würde folglich äquivalent zu einem Zylinder sein. Zur Einfachheit wird ferner angenommen, daß das Verzeichnis 108 und die FAT 104 und 106 jeweils eine einzige Spur besetzen.
  • Durch Folgen des im vorhergehenden erörterten Beispiels können die absoluten Sektoren, die durch das Betriebssystem verwendet werden, um eine spezielle Datei auf der Festplatte zu speichern, ohne weiteres bestimmt werden. Programmtechnisch würde man die Betriebsmittel des Basis-Ein-Ausgabe- Systems (BIOS; BIOS = Basic Input Output System), insbesondere Interrupt-13 (interrupt = Unterbrechung) verwenden, um absolute Plattensektoren zu lesen und zu schreiben.
  • Anwendungsprogramminstallation
  • Fig. 3 stellt die ersten drei Schritte des Anwendungsprogramm-Installationsverfahrens dar. Bei einem Schritt 1 wird der Benutzer mit einer Verteilungsplatte 302 versorgt, die eine verschlüsselte Kopie des Anwendungsprogramms und andere Dateien enthält. Die Platte 302 kann irgendeine Einrichtung einer Softwareverteilung sein, wie z. B. eine Diskette, eine optische Platte oder eine Dateidiensteinheit, die mit dem Computer des Benutzers über ein Netzwerk oder ein Telephon verbunden ist. Ein Computer 304 liest das Anwendungsprogramm von der Verteilungsplatte 302.
  • Bei einem Schritt 2 wird das Anwendungsprogramm "Application.EXE" verschlüsselt und zu "Application.TRY" umbenannt. Jeder Verschlüsselungsalgorithmus kann verwendet werden, um das Anwendungsprogramm zu verschlüsseln. Ein einfaches Verfahren besteht darin, die Bits in allen oder einigen der Bytes von Daten zu invertieren, die das Anwendungsprogramm bilden. Umständlichere Verschlüsselungsalgorithmen, wie z. B. das Datenverschlüsselungssystem (DES; DES = Data Encryption System), können ebenso verwendet werden. Je sicherer der Verschlüsselungsalgorithmus ist, der verwendet wird, desto schwieriger ist es, das Softwareschutzverfahren zu durchbrechen. Das Umbenennen einer Datei wird durch Verwenden des MS-DOS-"REN"-Befehls oder anderer Verfahren durchgeführt, die für einen Fachmann bekannt sind.
  • Bei einem Schritt 3 wird die verschlüsselte und umbenannte Anwendung Application.TRY auf einer Festplatte 306 gespeichert, die ein Teil des Computers 304 ist.
  • Fig. 4 stellt Schritte 4 bis 6 des Anwendungsprogramm- Installationsverfahrens dar. Der Schritt 4 zieht das Lesen des Programms Try.EXE von der Verteilungsplatte 302 mit sich. Das Programm Try.EXE ist das Programm, das der Benutzer ausführen wird, um das Anwendungsprogramm laufen zu lassen. Ferner prüft das Programm Try.EXE die Dateien auf der Festplatte 306, um zu überprüfen, daß kein unerlaubter Eingriff an den Dateien vorgenommen wurde.
  • Bei dem Schritt S wird das Programm Try.EXE zu Application.EXE umbenannt. Dieses Umbenennen wird so durchgeführt, daß das Programm Try ausgeführt wird, wenn der Benutzer das Anwendungsprogramm ausführen will. Das Programm Try wird das Anwendungsprogramm ausführen, nachdem dasselbe Überprüfungstests durchgeführt hat. Nachdem das Programm Try umbenannt ist, wird dasselbe bei dem Schritt 6 auf der Festplatte 306 als Application.EXE gespeichert.
  • Fig. 5 stellt Schritte 7-9 des Anwendungsprogramm-Installationsverfahrens dar. Der Computer 304 erzeugt bei Schritt 7 zwei Dateien Application.BLK und Zufall, auf der Festplatte. Der Schritt 8 bringt die Verschlüsselung der absoluten Plattenposition der Dateien Application.BLK, Zufall und Application.TRY zusammen mit einer Probezählwertzahl und einem Decodierungsschlüssel mit sich. Die Probezählwertzahl ist die Anzahl von Malen, wie oft es gestattet ist, daß das Anwendungsprogramm ausgeführt wird. Der Decodierungsschlüssel wird verwendet, um das verschlüsselte Anwendungsprogramm zu decodieren, und kann ein einfacher Schlüssel sein, wie er verwendet werden würde, um invertierte Bits oder einen komplexen Mehr-Byte-Schlüssel wiederherzustellen. Bei dem Schritt 9 werden die verschlüsselten Informationen von dem Schritt 8 in den zwei Dateien Application.BLK und Zufall gespeichert.
  • Fig. 6 stellt Schritte 10 bis 11 des Anwendungsprogramm- Installationsverfahrens dar. Die Verteilungsplatte 302 enthält ein Beenden-und-Resident-Bleiben- (TSR; TSR = Terminate and Stay Resident) Programm TSR. EXE, wobei bei dem Schritt 10 diese Datei in den Computer 304 gelesen wird. Das Programm TSR überwacht die MS-DOS-Plattenbefehle, um zu bestimmen, ob das verschlüsselte Programm Application.TRY in den Speicher des Computers 304 gelesen wird. Bei dem Schritt 11 wird das Programm TSR.EXE auf die Festplatte 306 gespeichert.
  • Fig. 7 stellt Schritte 12 bis 14 des Anwendungsprogramm- Installationsverfahrens dar. Bei dem Schritt 12 wird das MS-DOS-Programm Autoexec.BAT von der Festplatte 306 gelesen. Das Programm Autoexec.BAT wird editiert, um einen Befehl einzufügen, um das Programm TSR.EXE bei dem Schritt 13 auszuführen. Da Autoexec.BAT automatisch ausgeführt wird, wenn der Computer 304 angeschaltet wird, wird das Programm TSR ausgeführt werden und in dem Computerspeicher resident verbleiben, wo dasselbe die Plattentätigkeit überwachen wird. Das editierte Autoexec.BAT-Programm wird bei dem Schritt 14 auf die Festplatte 306 gespeichert.
  • TSR-Programm-Installation und -Funktion
  • Fig. 8 stellt Schritte 1 und 2 des TSR-Programm-Installationsverfahrens dar. Wenn der Computer 304 angeschaltet wird (urgeladen wird), läuft automatisch das Autoexec.BAT-Programm ab. Das Programm Autoexec ist ein Stapelprogramm, das eine Liste der Befehle enthält, die der Computer durchführt, wenn derselbe urgeladen wird. Einer der Befehle ist der Befehl, das Programm TSR.EXE auszuführen. Bei dem Schritt 1 liest der Computer 304 das Programm TSR.EXE von der Festplatte 306, wo dasselbe vorher gespeichert war. Daraufhin führt der Computer bei dem Schritt 2 das Programm TSR aus. Das Programm TSR wird in der Interrupt-13-Kette installiert. Diese Installation wird durch Ersetzen der Adresse bei der Interrupt-13-Position mit der Speicheradresse des Programms TSR durchgeführt. Die alte Interrupt-13-Adresse wird für eine zukünftige Verwendung durch das Programm TSR gespeichert. Nun wird jedes Programm, das eine Interrupt-13- Anforderung (eine Anforderung für einen Plattendienst) ausgibt, automatisch die Steuerung zu dem Programm TSR übertragen. Das Programm TSR wird alle Interrupt-13- (Int.13-) Anforderungen und insbesondere diejenigen überwachen, die zum Laden der Sektoren vorgesehen sind, die die verschlüsselten Sektoren des Anwendungsprogramms (Application.TRY) enthalten.
  • Fig. 9A und 9B zeigen ein Flußdiagramm für das Programm TSR.EXE. Der Prozeß TSR startet, wenn eine Int.13-Anforderung ausgegeben wird, 902. Der nächste Schritt, 904, besteht darin, um zu erkennen, ob die Int.13-Anforderung eine Lese-Anforderung ist. Falls dieselbe eine Lese-Anforderung ist, wird der Prozeß, der in Fig. 9B gezeigt ist, durchgeführt, wobei mit Block 906 gestartet wird. Falls die Int.13-Anforderung keine Lese-Anforderung ist, wird nachgesehen, ob die Anforderung eine Steuerung-Anforderung ist, 908. Falls die Anforderung keine Steuerung-Anforderung ist, muß das TSR-Programm keine Funktion durchführen, wobei die Steuerung zu dem Programm übertragen wird, das bei der alten Int.13-Adresse positioniert ist, 910. Falls eine Steuerung- Anforderung ausgegeben wurde, wird geprüft, um zu erkennen, ob die Steuerung-Anforderung für das Programm TSR ist, 912. Falls die Steuerung-Anforderung nicht für das TSR-Programm ist, muß das Programm TSR keine Funktion durchführen, wobei die Steuerung zu dem Programm übertragen wird, das bei der alten Int.13-Adresse positioniert ist, 910.
  • Falls die Steuerung-Anforderung für das TSR-Programm ist, führt das Programm TSR eine von zwei Funktionen 914 oder 916 durch. Bei dem Block 914 speichert das Programm TSR die absolute Plattenposition der Sektoren, die verwendet werden, um das Programm Application.TRY zu speichern. Durch Speichern der Position der verschlüsselten Plattensektoren, kann das Programm TSR eine Platten-Lese-Anforderung untersuchen, um zu bestimmen, ob eine oder mehrere der Sektoren, die das Anwendungsprogramm speichern, angefordert worden sind. Das Programm TSR erhält ferner eine Freigabe-Flag. Falls die Flag freigegeben ist, wird das Programm TSR die verschlüsselten Plattensektoren decodieren, die in den Speicher gelesen worden sind. Falls die Flag jedoch "gelöscht" ist, ist das Programm TSR effektiv abgeschaltet. Eine der Steuerung-Anforderungen, die das Programm TSR durchführen wird, besteht darin, die Flag zu löschen, 916. Nachdem alle Steuerung-Anforderungen durchgeführt worden sind, führt das Programm TSR einen IRET-Befehl 918 durch, der die Steuerung zu dem Programm zurückgibt, das die Int.13-Anforderung ausgegeben hat.
  • Falls die Int.13-Anforderung eine Lese-Anforderung ist, wird der Prozeß, der in Fig. 9B dargestellt ist, durchgeführt. Bei dem Block 906 wird ein Sprung zu einem Unterprogramm (JSB, JSB = jump to subroutine) zu der alten Int.13-Adresse durchgeführt. Dies bewirkt, daß das Programm bei der alten Int.13-Adresse seine Funktion durchführt, wobei dieses Programm typischerweise die Plattensektoren liest und daraufhin die Steuerung zurück zu dem Programm TSR gibt. Nachdem die Steuerung zu dem Programm TSR zurückgegeben ist, prüft das Programm TSR, um zu erkennen, ob die Freigabe-Flag eingestellt ist, 920, und prüft, um zu erkennen, ob die gelesenen Sektoren aufweisen, die das Anwendungsprogramm enthalten, 922. Falls die Flag nicht eingestellt ist oder die Sektoren das Anwendungsprogramm nicht enthalten, führt das Programm TSR einen IRET-Befehl durch, 928, der die Steuerung an das Programm überträgt, das die Int.13-Anforderung ausgab.
  • Nachdem alle Prüfungen abgeschlossen sind, entschlüsselt das Programm TSR nun die Plattensektoren, 926, die das verschlüsselte Anwendungsprogramm enthalten und in den Speicher geschrieben worden sind. Das Programm TSR verwendet den Schlüssel, der zu demselben durch eine Int.13-Steuerung- Anforderung weitergeleitet wurde, um die Sektoren zu entschlüsseln. Abhängig von dem verwendeten Verschlüsselungsverfahren kann der Schlüssel einfach oder sehr komplex sein. Nachdem die Sektoren entschlüsselt worden sind, führt das Programm TSR einen IRET-Befehl durch, 928, um die Steuerung zurück zu dem Programm zu geben, das die Int.13-Anforderung ausgegeben hat.
  • Anwendungsprogrammausführung
  • Fig. 10 stellt die Grundfunktionen dar, die auftreten, wenn das Anwendungsprogramm ausgeführt wird. Bei einem Schritt 1 werden die Programme Application.EXE und Application.TRY und die Dateien Application.BLK und die Zufall-Datei(en) von der Festplatte 306 gelesen. Das Programm Application.EXE wird bei einem Schritt 2 ausgeführt. Bei einem Schritt 3 validiert das Programm Application.EXE das Programm Application.TRY, die Datei Application.BLK und die Datei(en) Zufall. Falls das Programm und die Dateien validiert sind, bewirkt das Programm Application.EXE, daß das Programm Application.TRY entschlüsselt wird, und erzeugt eine neue Datei Application.BLK und neue, zufällig benannte Dateien. Danach wird bei einem Schritt 4 das Programm Application.TRY ausgeführt, wobei der Benutzer das Applikationsprogramm verwenden kann.
  • Fig. 11A, 11B und 12 stellen ein detailliertes Flußdiagramm für die Ausführung des Applikationsprogramms dar. Nachdem das Programm TSR geladen und ausgeführt worden ist, wie es im vorhergehenden beschrieben wurde, bewirkt der Benutzer, daß das Programm Application.EXE ausgeführt wird. Wie es im vorhergehenden beschrieben wurde, ist das Programm Application.EXE das ehemalige Programm TRY.EXE. Wenn das Programm Application.EXE ausgeführt wird, 1102, wird das Programm "Validate" aufgerufen, 1104. Das Programm Validate prüft, um zu sehen, ob der Benutzer autorisiert ist, um das Anwendungsprogramm laufen zu lassen. Ein Flußdiagramm für das Validate-Programm ist in Fig. 13 gezeigt. Eine Validierungsflag wird von dem Validate-Programm zurückgegeben. Das Programm Application.EXE prüft die Validierungsflag, um zu bestimmen, ob es erlaubt ist, daß der Benutzer das Anwendungsprogramm ausführt.
  • Nach dem Validierungsprozeß zeigt das Programm Application.EXE eine Dialogbox auf dem Computer des Benutzers 304 an, 1108. Diese Dialogbox gibt dem Benutzer drei Wahlmöglichkeiten:
  • 1. Das Programm zu kaufen
  • 2. Die Anforderung, die Anwendung auszuführen, abzubrechen
  • 3. Das Anwendungsprogramm auszuführen
  • Falls die Validierungsflag eingestellt ist (irgendeine Verletzung festgestellt wurde), kann der Benutzer lediglich das Programm kaufen oder die Abfrage abbrechen. Der Benutzer, der die Ausführ-Option auswählt, bewirkt, daß das Programm Application.EXE die Int.13-Anforderungen ausgibt. Die erste Int.13-Anforderung stellt die Flag in dem Programm TSR ein, 1110. Dies wird durch Senden einer Steuerung- Anforderung zu dem Programm TSR durchgeführt, die bewirkt, daß die TSR-Flag eingestellt wird, und gibt das Programm TSR frei, um die verschlüsselten Festplattensektoren zu entschlüsseln. Eine zweite Int.13-Anforderung leitet zu dem Programm TSR die absolute Position der Sektoren auf der Festplatte weiter, die verwendet werden, um das Anwendungsprogramm zu speichern, 1112. Die dritte Int.13-Anforderung sendet zu dem Programm TSR einen Schlüssel, der von dem Programm TSR verwendet wird, um die verschlüsselten Plattensektoren zu entschlüsseln.
  • Das Programm Application.EXE löscht das Programm Application.BLK und die Zufall-Datei(en) von der Festplatte 1116 und erzeugt neue Dateien 1118. Dieser Prozeß ist im wesentlichen derselbe Prozeß, wie der in Verbindung mit Fig. 5 Schritte 7-9 beschriebene Prozeß. Die Probezählwertzahl wird jedoch um Eins von dem vorhergehenden Wert dekrementiert, um die gegenwärtige Ausführung des Anwendungsprogramms wiederzuspiegeln.
  • Das Programm Application.EXE bewirkt nun, daß das Betriebssystem das Programm Application.TRY lädt und ausführt, 1120, wodurch das Anwendungsprogramm abläuft. Während des Prozesses des Ladens des Programms Application.TRY wird eine Int.13-Anforderung ausgegeben werden, wodurch bewirkt wird, daß das Programm TSR die notwendigen Festplattensektoren entschlüsselt, die in den Speicher des Computers 304 geladen sind.
  • Falls die Validierungsflag gesetzt wurde oder falls der Benutzer die Kauf- oder Abbruch-Optionen, die durch die Dialogbox angezeigt sind, ausgewählt hat, wird der Prozeß, der in Fig. 12 dargestellt ist, durchgeführt. An dem Kauf/Abbruch-Optionspunkt endet das Programm Application.EXE, 1202, und überträgt die Steuerung zurück zu dem Betriebssystem 1204, falls der Benutzer Abbrechen auswählt. Der Benutzer kann wünschen, die Abbruch-Option auszuwählen, falls die Anzahl von Malen, wie oft der Benutzer noch das Anwendungsprogramm ausführen kann, klein ist, und die gegenwärtige Aufgabe nicht sehr wichtig ist.
  • Falls die Kaufoption ausgewählt wird, wird der Benutzer veranlaßt, einen Schlüssel einzugeben, 1206. Falls der Benutzer die Kauf-Option ausgewählt hat, würde typischerweise eine zweite Dialogbox (nicht gezeigt) angezeigt werden, die dem Benutzer die Telefonnummer des Softwarehändlers gibt, um anzurufen. Der Benutzer würde daraufhin dem erforderlichen Schlüssel durch Einkaufen des Programms über das Telephon von dem Softwarehändler empfangen. Nach Überprüfen des Schlüssels entschlüsselt das Programm Application.EXE das Programm Application.TRY, 1208, und benennt daraufhin das Programm Application.TRY zu Application.EXE um, 1210. Das entschlüsselte Anwendungsprogramm wird daraufhin auf die Festplatte gespeichert, 1212. Die Steuerung wird nun zu dem Betriebssystem zurückgegeben, 1204. An diesem Punkt ist das Anwendungsprogramm nicht mehr geschützt und kann durch Benutzer eine unbegrenzte Anzahl von Malen ausgeführt werden.
  • Fig. 13 stellt ein Flußdiagramm für das Validate-Programm dar, das durch das Programm Application.EXE aufgerufen wird, um die Integrität des Anwendungssperrverfahrens zu überprüfen. Nachdem das Validate-Programm aufgerufen ist, 1302, wird der Name des Anwendungsprogramms erzeugt, 1304. Da das Validate-Programm aufgerufen sein kann, um eine Anzahl von Anwendungsprogrammen zu überprüfen, ist dieser Namenserzeugungsschritt erforderlich, um zu bestimmen, welches Anwendungsprogramm geprüft werden soll. Der Name des Programms, der das Überprüfungsprogramm aufruft, wird verwendet, um den Anwendungsprogrammnamen zu erzeugen. Das Programm Application.EXE kann beispielsweise in Wirklichkeit "Wordperfect.EXE" genannt werden, wobei folglich das Überprüfungsprogramm wissen wird, die Dateien zu untersuchen, die sich auf das Wordperfect-Anwendungsprogramm beziehen. Durch das Kennen des Namens des Anwendungsprogramms wird das Überprüfungsprogramm den Application.BLK-Dateinamen bestimmen, 1306. In dem im vorherigen beschriebenen Beispiel wird das Application.BLK in Wirklichkeit Wordperfect.BLK genannt.
  • Das Überprüfungsprogramm extrahiert die Probezählwertinformationen, den Namen der Zufall-Datei, die der Anwendung und dem Entschlüsselungsschlüssel zugeordnet ist, die Positionen der Dateien und einen Entschlüsselungsschlüssel aus der Application.BLK-Datei, 1308. Diese Informationen sind in der Application.BLK-Datei und den Zufall-Dateien verschlüsselt und müssen gemäß des Verschlüsselungsverfahrens, das verwendet wird, entschlüsselt werden.
  • Das Validate-Programm prüft nun, um zu erkennen, ob es erlaubt ist, daß der Benutzer das Anwendungsprogramm ausführt, 1310. Falls keine weiteren erlaubten Abläufe des Anwendungsprogramms verfügbar sind, wird die Validierungsflag eingestellt 1312 und das Validate-Programm gibt die Steuerung zu dem aufrufenden Programm zurück 1314. Die Positionen aller Dateien, die dem Anwendungsprogramm zugeordnet sind, werden ebenfalls geprüft, um zu erkennen, ob irgendeine der Dateien verschoben worden ist. Falls eine oder mehrere Dateien verschoben worden sind, wird die Ungültig-Flag eingestellt, 1312, und das Validateprogramm gibt die Steuerung zu dem aufrufenden Programm zurück 1314. Sollten der Probezählwert, die Dateinamen und -Positionen und der Entschlüsselungsprozeß alle die Überprüfung erfüllen, kann der Benutzer das Anwendungsprogramm ausführen, wobei das Validate-Programm nicht die Ungültig-flag einstellt und die Steuerung zu dem aufrufenden Programm zurückgibt, 1314.
  • Schlußfolgerung
  • Außer in dem Fall, wenn der Benutzer das Programm kauft, ist das Anwendungsprogramm niemals auf der Festplatte in einer unverschlüsselten Form verfügbar, wobei folglich die Sicherheit dieses neuen und neuartigen Verfahrens hoch ist. Obwohl ein spezielles Ausführungsbeispiel dieser Erfindung beschrieben worden ist, wird es ferner für Fachleute offensichtlich sein, daß Modifikationen an diesem Verfahren durchgeführt werden können, wobei dieselben immer noch die Vorteile dieser Erfindung nutzen. Anstatt einer einzigen erzeugten Zufall-Datei kann beispielsweise eine größere Anzahl von Zufall-Dateien erzeugt werden, wodurch die Schwierigkeit erhöht wird, dieses neuartige Programmsperrverfahren zu überwinden. Das im vorhergehenden beschriebene Beispiel ist dazu gedacht, ein Ausführungsbeispiel der vorliegenden Erfindung darzustellen, und ist nicht als eine Begrenzung des Schutzbereiches dieser Erfindung anzusehen, der lediglich durch die folgenden Ansprüche definiert ist.

Claims (4)

1. Ein Verfahren, durch das ein Softwareprogramm vor einer Ausführung überprüft wird, wobei das Softwareprogramm eine ursprüngliche Speicherungsposition und eine augenblickliche Speicherungsposition auf einer Festplatte (306) mit Sektoren aufweist, mit folgenden Schritten:
a) Bestimmen der augenblicklichen Sektorposition des Softwareprogramms auf der Festplatte (1308);
b) Bestimmen der ursprünglichen Sektorposition des Softwareprogramms auf der Festplatte (1310);
c) Durchführen eines Überprüfungsprozesses, der das Bestimmen aufweist, ob die ursprüngliche und die augenblickliche Sektorposition des Softwareprogramms dieselben sind (1310); und
d) Bewirken, daß das Softwareprogramm ausgeführt wird, falls der Überprüfungsprozeß erfolgreich ist.
2. Ein Verfahren gemäß Anspruch 1, bei dem der Überprüfungsprozeß ferner folgende Schritte aufweist:
a) Wiedergewinnen der ursprünglichen Sektorposition für das Softwareprogramm aus einer ersten Datei (1308);
b) Überprüfen, daß die erste Datei an einer ursprünglichen Festplattenposition positioniert ist (1310); und
c) Bestimmen, ob das Softwareprogramm mehr als eine voreingestellte Anzahl von Malen ausgeführt worden ist (1310).
3. Ein Verfahren gemäß Anspruch 1, bei dem der Überprüfungsprozeß ferner folgende Schritte aufweist:
a) Wiedergewinnen des Namens einer zweiten Datei aus der ersten Datei (1308);
b) Wiedergewinnen der ursprünglichen Sektorposition für das Softwareprogramm aus der zweiten Datei (1308);
c) Überprüfen, daß die zweite Datei an einer ursprünglichen Festplattenposition positioniert ist (1308); und
d) Verwenden von Zählwertinformationen in entweder der ersten oder der zweiten Datei, um zu bestimmen, ob das Softwareprogramm mehr als eine voreingestellte Anzahl von Malen ausgeführt worden ist (1310).
4. Ein Verfahren gemäß einem der vorhergehenden Ansprüche, das ferner folgende Schritte aufweist:
a) Wiedergewinnen eines Entschlüsselungsschlüssels aus einer Datei (1308); und
b) Verwenden des Entschlüsselungsschlüssels, um das Softwareprogramm zu entschlüsseln, bevor das Softwareprogramm ausgeführt wird (1208).
DE69326119T 1992-11-13 1993-11-15 Überprüfung von Softwareprogrammen Expired - Fee Related DE69326119T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/976,176 US5327563A (en) 1992-11-13 1992-11-13 Method for locking software files to a specific storage device

Publications (2)

Publication Number Publication Date
DE69326119D1 DE69326119D1 (de) 1999-09-30
DE69326119T2 true DE69326119T2 (de) 2000-01-20

Family

ID=25523818

Family Applications (2)

Application Number Title Priority Date Filing Date
DE69331613T Expired - Fee Related DE69331613T2 (de) 1992-11-13 1993-11-15 Dateienverschlüsselung
DE69326119T Expired - Fee Related DE69326119T2 (de) 1992-11-13 1993-11-15 Überprüfung von Softwareprogrammen

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE69331613T Expired - Fee Related DE69331613T2 (de) 1992-11-13 1993-11-15 Dateienverschlüsselung

Country Status (3)

Country Link
US (2) US5327563A (de)
EP (2) EP0598587B1 (de)
DE (2) DE69331613T2 (de)

Families Citing this family (97)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5422762A (en) * 1992-09-30 1995-06-06 Hewlett-Packard Company Method and apparatus for optimizing disk performance by locating a file directory on a middle track and distributing the file allocation tables close to clusters referenced in the tables
US5267314A (en) * 1992-11-17 1993-11-30 Leon Stambler Secure transaction system and method utilized therein
US5563946A (en) * 1994-04-25 1996-10-08 International Business Machines Corporation Method and apparatus for enabling trial period use of software products: method and apparatus for passing encrypted files between data processing systems
US5757907A (en) * 1994-04-25 1998-05-26 International Business Machines Corporation Method and apparatus for enabling trial period use of software products: method and apparatus for generating a machine-dependent identification
US5689560A (en) * 1994-04-25 1997-11-18 International Business Machines Corporation Method and apparatus for enabling trial period use of software products: method and apparatus for allowing a try-and-buy user interaction
CA2143874C (en) * 1994-04-25 2000-06-20 Thomas Edward Cooper Method and apparatus for enabling trial period use of software products: method and apparatus for utilizing a decryption stub
US5598470A (en) * 1994-04-25 1997-01-28 International Business Machines Corporation Method and apparatus for enabling trial period use of software products: Method and apparatus for utilizing a decryption block
US5701463A (en) * 1994-09-09 1997-12-23 Cheyenne Advanced Technology Limited Method of replacing the identity of a file with another as part of a file open request in a computer system
US5615061A (en) * 1994-09-29 1997-03-25 Singh; Jitendra K. Method of preventng software piracy by uniquely identifying the specific magnetic storage device the software is stored on
US5570310A (en) * 1994-12-05 1996-10-29 Motorola Inc. Method and data processor for finding a logarithm of a number
JP3366143B2 (ja) * 1995-01-10 2003-01-14 富士通株式会社 ソフトウェア流通システムにおける識別子管理装置および方法ならびにソフトウェア流通管理装置および方法
US5742829A (en) * 1995-03-10 1998-04-21 Microsoft Corporation Automatic software installation on heterogeneous networked client computer systems
DE19510436C2 (de) * 1995-03-22 1997-04-10 Spoettl Stefan Dipl Inform Verfahren zum Kopierschutz von Software
US5715455A (en) * 1995-05-18 1998-02-03 International Business Machines Corporation Apparatus and method for storing file allocation table efficiently in memory
US5903647A (en) * 1995-06-07 1999-05-11 Digital River, Inc. Self-launching encrypted digital information distribution system
US5870543A (en) * 1995-06-07 1999-02-09 Digital River, Inc. System for preventing unauthorized copying of active software
US5883955A (en) * 1995-06-07 1999-03-16 Digital River, Inc. On-line try before you buy software distribution system
JPH08335182A (ja) * 1995-06-07 1996-12-17 Fujitsu Ltd ファイル保護システム及びそのファイル保護システムを用いたソフトウエア利用システム及びそのソフトウエア利用システムに用いられる記録媒体
US5887060A (en) * 1995-06-07 1999-03-23 Digital River, Inc. Central database system for automatic software program sales
US5883954A (en) * 1995-06-07 1999-03-16 Digital River, Inc. Self-launching encrypted try before you buy software distribution system
CA2223409A1 (en) * 1995-06-07 1996-12-19 Digital River, Inc. Try before you buy software distribution and marketing system
US5671420A (en) * 1995-06-28 1997-09-23 Canon Information Systems, Inc. Distribution diskette utility
KR100269104B1 (ko) * 1995-08-10 2000-10-16 윤종용 보안장치를구비한개인용컴퓨터,그의보안방법및그보안장치의설치및제거방법
US5917910A (en) * 1995-10-16 1999-06-29 Sony Corporation Encrypting method and apparatus, recording method, decrypting method and apparatus, and recording medium
JPH09134310A (ja) * 1995-11-07 1997-05-20 Fujitsu Ltd データの復号アルゴリズムを記憶する記憶媒体および方法
US5809230A (en) * 1996-01-16 1998-09-15 Mclellan Software International, Llc System and method for controlling access to personal computer system resources
US5706426A (en) * 1996-02-07 1998-01-06 United Microelectronics Corporation Software protection method and apparatus
US5870468A (en) * 1996-03-01 1999-02-09 International Business Machines Corporation Enhanced data privacy for portable computers
US6009543A (en) * 1996-03-01 1999-12-28 Massachusetts Institute Of Technology Secure software system and related techniques
US6199163B1 (en) * 1996-03-26 2001-03-06 Nec Corporation Hard disk password lock
US6052780A (en) * 1996-09-12 2000-04-18 Open Security Solutions, Llc Computer system and process for accessing an encrypted and self-decrypting digital information product while restricting access to decrypted digital information
US6247131B1 (en) * 1997-03-14 2001-06-12 Fujitsu Limited Information management method and recording medium
US5903896A (en) * 1997-07-15 1999-05-11 Microsoft Corporation Method for installing a file on demand using a preview
ES2155230T3 (es) 1997-08-28 2001-05-01 Sony Dadc Austria Ag Sistema para gestionar el copiado de un disco optico.
US6044469A (en) * 1997-08-29 2000-03-28 Preview Software Software publisher or distributor configurable software security mechanism
US6055503A (en) * 1997-08-29 2000-04-25 Preview Systems Software program self-modification
US6009525A (en) * 1997-08-29 1999-12-28 Preview Systems, Inc. Multi-tier electronic software distribution
US6098054A (en) * 1997-11-13 2000-08-01 Hewlett-Packard Company Method of securing software configuration parameters with digital signatures
US6480959B1 (en) * 1997-12-05 2002-11-12 Jamama, Llc Software system and associated methods for controlling the use of computer programs
US6643775B1 (en) 1997-12-05 2003-11-04 Jamama, Llc Use of code obfuscation to inhibit generation of non-use-restricted versions of copy protected software applications
US6134659A (en) * 1998-01-07 2000-10-17 Sprong; Katherine A. Controlled usage software
US6272593B1 (en) 1998-04-10 2001-08-07 Microsoft Corporation Dynamic network cache directories
WO1999059058A1 (fr) * 1998-05-14 1999-11-18 Sega Enterprises, Ltd. Processeur d'informations, procede de traitement d'informations, support d'enregistrement d'informations et systeme de traitement d'informations
US6199107B1 (en) 1998-07-22 2001-03-06 Microsoft Corporation Partial file caching and read range resume system and method
WO2000029928A1 (en) * 1998-11-13 2000-05-25 Iomega Corporation System for keying protected electronic data to particular media using a compound key to prevent unauthorized copying
US6233606B1 (en) 1998-12-01 2001-05-15 Microsoft Corporation Automatic cache synchronization
US7617124B1 (en) 1998-12-04 2009-11-10 Digital River, Inc. Apparatus and method for secure downloading of files
US20030195974A1 (en) 1998-12-04 2003-10-16 Ronning Joel A. Apparatus and method for scheduling of search for updates or downloads of a file
US7058597B1 (en) 1998-12-04 2006-06-06 Digital River, Inc. Apparatus and method for adaptive fraud screening for electronic commerce transactions
JP4132334B2 (ja) * 1998-12-28 2008-08-13 株式会社日立製作所 デジタルコンテンツ不正使用防止方法及びその実施システム並びにその処理プログラムを記録した媒体
US6615349B1 (en) 1999-02-23 2003-09-02 Parsec Sight/Sound, Inc. System and method for manipulating a computer file and/or program
US6591367B1 (en) 1999-03-31 2003-07-08 Atabok Japan, Inc. Method and apparatus for preventing unauthorized copying and distributing of electronic messages transmitted over a network
US6658567B1 (en) 1999-06-25 2003-12-02 Geomechanics International, Inc. Method and logic for locking geological data and an analyzer program that analyzes the geological data
US6553409B1 (en) 1999-07-09 2003-04-22 Microsoft Corporation Background cache synchronization
JP2001043139A (ja) * 1999-07-29 2001-02-16 Pioneer Electronic Corp 信号処理装置及びそれに用いる情報記録媒体
WO2001015163A1 (fr) * 1999-08-20 2001-03-01 Sony Corporation Dispositif d'enregistrement et de reproduction d'information
US7216235B1 (en) * 1999-10-19 2007-05-08 Tivo Inc. Drive/host locking system
EP1141808A1 (de) * 1999-10-29 2001-10-10 Koninklijke Philips Electronics N.V. Sicherung der datenintegrität über einen sicheren zähler
US6654888B1 (en) 1999-12-31 2003-11-25 International Business Machines Corporation Installing and controlling trial software
US6304972B1 (en) 2000-01-03 2001-10-16 Massachusetts Institute Of Technology Secure software system and related techniques
AU2001261078A1 (en) * 2000-04-26 2001-11-07 Venice Technologies, Inc. Methods and systems for securing computer software
JP4033619B2 (ja) * 2000-05-26 2008-01-16 シャープ株式会社 サーバ装置
AU9291001A (en) * 2000-09-22 2002-04-02 Edc Systems Inc Systems and methods for preventing unauthorized use of digital content
US7237123B2 (en) * 2000-09-22 2007-06-26 Ecd Systems, Inc. Systems and methods for preventing unauthorized use of digital content
US8087014B1 (en) * 2000-10-26 2011-12-27 Qualcomm Incorporated Method and apparatus for configuration management for a computing device
CA2446584A1 (en) 2001-05-09 2002-11-14 Ecd Systems, Inc. Systems and methods for the prevention of unauthorized use and manipulation of digital content
JP2003044155A (ja) * 2001-07-30 2003-02-14 Hitachi-Lg Data Storage Inc ソフトウェアのインストール方法及びファームウェアのアップデート方法及びそれらに用いる記録再生装置及び記録媒体
US20030028765A1 (en) * 2001-07-31 2003-02-06 Cromer Daryl Carvis Protecting information on a computer readable medium
GB2386521A (en) * 2002-03-14 2003-09-17 Screendragon Ltd A media playback system where data is decrypted subject to certain access conditions being met
US6898555B2 (en) * 2003-07-14 2005-05-24 Aladdin Knowledge Systems Ltd. Method for indicating the integrity of use-information of a computer program
US7397812B2 (en) * 2004-08-31 2008-07-08 General Motors Corporation System and method for wireless broadcast of multimedia files to vehicles
US7529724B1 (en) * 2004-09-21 2009-05-05 Emc Corporation Servicing work requests between units of a storage device
US8122201B1 (en) 2004-09-21 2012-02-21 Emc Corporation Backup work request processing by accessing a work request of a data record stored in global memory
US20060161968A1 (en) * 2004-12-21 2006-07-20 Nintendo Co., Ltd. Method and apparatus for secure delivery and evaluation of prototype software over a network
US8423788B2 (en) * 2005-02-07 2013-04-16 Sandisk Technologies Inc. Secure memory card with life cycle phases
US8321686B2 (en) * 2005-02-07 2012-11-27 Sandisk Technologies Inc. Secure memory card with life cycle phases
US8108691B2 (en) * 2005-02-07 2012-01-31 Sandisk Technologies Inc. Methods used in a secure memory card with life cycle phases
WO2006103679A2 (en) 2005-04-01 2006-10-05 Ged-I Ltd. A method for data storage protection and encryption
US7748031B2 (en) 2005-07-08 2010-06-29 Sandisk Corporation Mass storage device with automated credentials loading
US7895651B2 (en) 2005-07-29 2011-02-22 Bit 9, Inc. Content tracking in a network security system
US8984636B2 (en) 2005-07-29 2015-03-17 Bit9, Inc. Content extractor and analysis system
US8272058B2 (en) 2005-07-29 2012-09-18 Bit 9, Inc. Centralized timed analysis in a network security system
US7934049B2 (en) 2005-09-14 2011-04-26 Sandisk Corporation Methods used in a secure yet flexible system architecture for secure devices with flash mass storage memory
US7536540B2 (en) * 2005-09-14 2009-05-19 Sandisk Corporation Method of hardware driver integrity check of memory card controller firmware
US20080072058A1 (en) * 2006-08-24 2008-03-20 Yoram Cedar Methods in a reader for one time password generating device
US20080052524A1 (en) * 2006-08-24 2008-02-28 Yoram Cedar Reader for one time password generating device
US20100250400A1 (en) * 2006-11-10 2010-09-30 Media Patents, S.L. Apparatus and methods for the sale of software products
US20080114695A1 (en) * 2006-11-10 2008-05-15 Semantic Components S.L. Process for implementing a method for the on-line sale of software product use licenses through a data network, and software component which allows carrying out said process
US20080162992A1 (en) * 2006-12-27 2008-07-03 Lonowski Wayne J Method and apparatus for intelligently re-sequencing tests based on production test results
US8423794B2 (en) * 2006-12-28 2013-04-16 Sandisk Technologies Inc. Method and apparatus for upgrading a memory card that has security mechanisms for preventing copying of secure content and applications
WO2008122308A1 (en) * 2007-04-04 2008-10-16 Media Patents S.L. Process for the on-line distribution, through a data network, of digital files protected by intellectual property rights and computer readable medium containing a program for carrying out said process
JP4954031B2 (ja) * 2007-11-16 2012-06-13 キヤノン株式会社 画像処理装置及び再インストール方法
US20110066843A1 (en) * 2009-09-16 2011-03-17 Brent Newman Mobile media play system and method
CA2693938A1 (en) * 2010-02-22 2011-08-22 Ibm Canada Limited - Ibm Canada Limitee Software object lock management using observations
US9531547B2 (en) * 2015-04-06 2016-12-27 Vmware, Inc. Host-based digital signature verification for guest components
GB2544328B (en) * 2015-11-13 2019-09-18 Towers Watson Ltd Software protection
GB2574316B (en) * 2015-11-13 2020-06-17 Towers Watson Ltd Controlling access to data

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4658093A (en) * 1983-07-11 1987-04-14 Hellman Martin E Software distribution system
US4584641A (en) * 1983-08-29 1986-04-22 Paul Guglielmino Copyprotecting system for software protection
US4740890A (en) * 1983-12-22 1988-04-26 Software Concepts, Inc. Software protection system with trial period usage code and unlimited use unlocking code both recorded on program storage media
US4577289A (en) * 1983-12-30 1986-03-18 International Business Machines Corporation Hardware key-on-disk system for copy-protecting magnetic storage media
US4644493A (en) * 1984-09-14 1987-02-17 International Business Machines Corporation Implementing a shared higher level of privilege on personal computers for copy protection of software
US4888798A (en) * 1985-04-19 1989-12-19 Oms, Inc. Modular software security
US4757533A (en) * 1985-09-11 1988-07-12 Computer Security Corporation Security system for microcomputers
US5014234A (en) * 1986-08-25 1991-05-07 Ncr Corporation System with software usage timer and counter for allowing limited use but preventing continued unauthorized use of protected software
US4796220A (en) * 1986-12-15 1989-01-03 Pride Software Development Corp. Method of controlling the copying of software
JPH01129328A (ja) * 1987-11-13 1989-05-22 Toshiba Corp コピー防止装置
FR2623640B1 (fr) * 1987-11-19 1990-03-16 Dassault Electronique Dispositif micro-informatique contre le deroulement de programmes frauduleux
US5113518A (en) * 1988-06-03 1992-05-12 Durst Jr Robert T Method and system for preventing unauthorized use of software
US5155827A (en) * 1989-03-17 1992-10-13 Ghering Boyd W Method for inhibiting an executable program in a disk operating system by replacing the program with an unexecutable program
US5081675A (en) * 1989-11-13 1992-01-14 Kitti Kittirutsunetorn System for protection of software in memory against unauthorized use
GB2238408A (en) * 1989-11-27 1991-05-29 Lanstrase Limited Copy protection in storage system
US5027396A (en) * 1990-05-07 1991-06-25 Xerox Corporation Execution protection for floppy disks
EP0459046A1 (de) * 1990-05-31 1991-12-04 International Business Machines Corporation Rechnerprogrammschutz
US5058162A (en) * 1990-08-09 1991-10-15 Hewlett-Packard Company Method of distributing computer data files
US5212729A (en) * 1992-01-22 1993-05-18 Schafer Randy J Computer data security device and method
US5267311A (en) * 1992-12-08 1993-11-30 Bakhoum Ezzat G Intelligent diskette for software protection

Also Published As

Publication number Publication date
US5327563A (en) 1994-07-05
EP0881561A2 (de) 1998-12-02
EP0881561A3 (de) 1999-02-24
DE69331613T2 (de) 2002-10-17
DE69331613D1 (de) 2002-03-28
DE69326119D1 (de) 1999-09-30
EP0598587B1 (de) 1999-08-25
US5628015A (en) 1997-05-06
EP0598587A1 (de) 1994-05-25
EP0881561B1 (de) 2002-02-20

Similar Documents

Publication Publication Date Title
DE69326119T2 (de) Überprüfung von Softwareprogrammen
DE3587658T2 (de) Ausführung von einer gemeinsam benutzten, höheren Privilegstufe auf persönlichen Computern für Softwarekopiersicherung.
DE69619186T2 (de) Gerät für die ausführung eines verschlüsselten progamms
DE69528408T2 (de) Verfahren und Vorrichtung, die es ermöglicht, Software zu erproben und Software-Objekte zu liefern
DE69531077T2 (de) Verfahren und Vorrichtung mit Benutzereinwirkung der Art Erproben-und-Kaufen, die es ermöglicht, Software zu erproben
DE69412196T2 (de) Verfahren zur Verwendung von Mediuminhomogenitäten zur Minimierung unbefugter Vervielfältigung digitaler Daten
DE69417268T4 (de) Verfahren zur elektronischen lizenzverteilung
DE68926606T2 (de) Empfangs- und Annahmeprüfungsverfahren für elektronisch abgegebene Datenobjekte
DE69531082T2 (de) Verfahren und Vorrichtung mit einem Verschlüsselungskopfteil, die es ermöglicht, Software zu erproben
DE69927022T2 (de) Verfahren zur steuerung der benutzung von softwarekomponenten
DE69701044T2 (de) Verteilung und kontrollierte benutzung von softwareprodukten
DE69433077T2 (de) Software-Verteilungsschutzverfahren
DE60021465T2 (de) Sicherheitsverwaltungssystem, Datenverteilungsvorrichtung und tragbares Terminalgerät
DE69407812T2 (de) Überprüfung der gültigkeit
DE69532936T2 (de) Vorrichtung und Verfahren zum Zugriff auf Software
DE60224060T2 (de) Verwendung von daten gespeichert in einem lese-zerstörenden speicher
DE69130175T2 (de) Sicherheitssystem zur aktivierung von personalcomputerprogrammen an entfernten orten
DE3689569T2 (de) Verfahren zur Systemdateiensicherung und Datenverarbeitungseinheit zu dessen Durchführung.
DE69636050T2 (de) Verfahren und system für die verwaltung eines datenobjektes zur verwendung von vorgegebenen zuständen
US7571176B2 (en) Selective file erasure using metadata modifications
DE60314782T2 (de) Vorrichtung zum Generieren eines verschlüsselten Programms
DE69927926T2 (de) Verfahren und System zum Verhindern illegaler Verwendung von digitalen Inhalten, Verarbeitungsprogramm dafür und Aufzeichnungsmedium für das Programm
DE60128909T2 (de) System und eingebetteter lizenzsteuerungsmechanismus für die erzeugung und verteilung von dateien mit digitalem inhalt sowie erzwingung von lizenziertem gebrauch von dateien mit digitalem inhalt
DE3615815A1 (de) Verfahren und vorrichtung zum verifizieren der identitaet eines dynamischen speichers
DE19717900C2 (de) Verfahren und Applet-Applikationsmaschine zur Verarbeitung eines Computer-Applets sowie ein Computersoftware-Applet

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: HEWLETT-PACKARD CO. (N.D.GES.D.STAATES DELAWARE),

8327 Change in the person/name/address of the patent owner

Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE

8339 Ceased/non-payment of the annual fee