DE60212169T2 - Laden von software - Google Patents

Laden von software Download PDF

Info

Publication number
DE60212169T2
DE60212169T2 DE60212169T DE60212169T DE60212169T2 DE 60212169 T2 DE60212169 T2 DE 60212169T2 DE 60212169 T DE60212169 T DE 60212169T DE 60212169 T DE60212169 T DE 60212169T DE 60212169 T2 DE60212169 T2 DE 60212169T2
Authority
DE
Germany
Prior art keywords
module
loader
modules
software
execution
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 - Lifetime
Application number
DE60212169T
Other languages
English (en)
Other versions
DE60212169D1 (de
Inventor
John Aram The Park Estate SAFA
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.)
Simplex Major Sdn Bhd
Original Assignee
Simplex Major Sdn Bhd
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 Simplex Major Sdn Bhd filed Critical Simplex Major Sdn Bhd
Application granted granted Critical
Publication of DE60212169D1 publication Critical patent/DE60212169D1/de
Publication of DE60212169T2 publication Critical patent/DE60212169T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44536Selecting among different versions
    • 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
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • G06F21/126Interacting with the operating system

Description

  • Die vorliegende Erfindung betrifft das Laden von Software.
  • Bei modernen Computersystemen wird die Anwendungssoftware üblicherweise in einem externen Speicher (wie beispielsweise einer Festplatte und dergleichen) gespeichert, wenn sie nicht benötigt wird. Die Anwendungssoftware wird in den Hauptspeicher (RAM) geladen, wenn sie zur Ausführung aufgerufen wird.
  • Die internationale Patentanmeldung WO 98/08163 A beschreibt ein Verfahren und eine Vorrichtung zum selektiven Steuern von Teilen eines ankommenden Datenstroms von einer externen Quelle zu einer ausgewählten Stelle, an der Programmbestandteile in dem ankommenden Datenstrom übersetzt und ausgeführt werden können. Dies verringert die Korruption oder die Beschädigung von Daten oder Programmen, die in einem Endanwender-Computersystemnetzwerk gehalten werden, durch mobile Programmbestandteile, die aus einer externen Quelle in das System importiert werden. Es wird auch beschrieben, dass diese Anordnungen erlauben, dass große Programmbestandteile in dem ankommenden Datenstrom übersetzt und auf einem spezifischen Server ausgeführt werden und somit die Belastung der Prozessoren in dem stromabwärtigen Endanwender-Computersystem verringern. Das System ist so beschrieben, dass es den Bedarf an großer Verarbeitungskapazität einzelner Terminals in dem stromabwärtigen System verringert.
  • Das Verfahren des Ladens der Software aus dem externen Speicher in den Hauptspeicher wird durch ein als „Ladevorrichtung" bezeichnetes Programm gesteuert.
  • Zusätzlich zum Installieren der Anwendungssoftware kann eine Ladevorrichtung verschiedene andere Operationen ausführen. Einige dieser Operationen können die Initialisierung verschiedener Daten, Register oder dergleichen umfassen, wie es für die Anwendungssoftware erforderlich ist. Andere Operationen können die Sicherheit betreffen, wie beispielsweise die Überprüfung der Lizenzierungsdetails, die im System enthalten sind.
  • In jüngerer Zeit sind Bemühungen unternommen worden, diese Sicherheitsüberprüfungen zu umgehen, um zu erlauben, dass unlizenzierte Kopien der Software verwendet werden. Eine Art, die Sicherheit zu umgehen, ist als „Reinlegen der Ladevorrichtung" bekannt. Ein Softwarestück, ähnlich einem Reparaturprogramm, wird verwendet, um eine Ausführung der Ladevorrichtung Schritt-für-Schritt zu erlauben, während eine jede Anweisung in der Ladevorrichtung analysiert wird und Sprunganweisungen oder Patches eingeführt werden, wenn Anweisungen nachgewiesen werden, die nach einer Sicherheitsüberprüfung verlangen. Entsprechend kann die Ladevorrichtung veranlasst werden, ihre Ausführung zu beenden, ohne Sicherheitsüberprüfungen vorgenommen zu haben, wodurch erlaubt wird, dass die Sicherheit umgangen wird.
  • Gemäß der vorliegenden Erfindung wird eine Software-Ladevorrichtungsanordnung bereitgestellt, die so betreibbar ist, dass ein Computerprogramm aus einem externen Speicher in eine zugeteilte Region des Hauptspeichers zur Ausführung geladen wird, wobei die Anordnung eine Vielzahl von Softwaremodulen und ein Koordinatormodul aufweist, das, bei der Anwendung, an eine zuvor bestimmte Stelle der zugeteilten Region geladen wird und betreibbar ist, um die Ausführung des oder eines jeden anderen Moduls zu koordinieren, und wenigstens ein Ladevorrichtungsmodul betreibbar ist, um wenigstens einen Teil der Ladeoperation durchzuführen, wobei das Koordinatormodul weiter betreibbar ist, um das oder ein jegliches Ladevorrichtungsmodul zur Ausführung aus der Anfangsspeicherstelle des Ladevorrichtungsmoduls in eine temporäre Speicherstelle zu schreiben, um die Ausführung des Moduls zu initiieren, und um nach der Ausführung das Modul aus der temporären Speicherstelle zu löschen.
  • Bevorzugterweise sind mehrere Ladevorrichtungsmodule enthalten, die entsprechende Teile der Ladeoperation vorsehen. Die mehreren Ladevorrichtungsmodule werden bevorzugterweise der Reihe nach in temporäre Speicherstellen geschrieben. Ein jedes Ladevorrichtungsmodul ist bevorzugterweise ausgewählt aus einer Gruppe von Modulen, wobei Module einer jeden Gruppe Anweisungssequenzen umfassen, die in einem jeden Modul verschieden sind und die dasselbe Ergebnis erreichen, wenn sie vollständig ausgeführt sind.
  • Bevorzugterweise ist ein Ladevorrichtungsteil der zugeteilten Region für Ladevorrichtungsoperationen bestimmt, wobei sich die oder eine jede temporäre Speicherstelle innerhalb des besagten Ladevorrichtungsteils befindet. Die oder eine jede Ladevorrichtung befindet sich bevorzugterweise anfänglich außerhalb des besagten Ladevorrichtungsteils. Ein Programmteil der zugeteilten Region ist bevorzugterweise für das Computerprogramm vorgesehen, wobei das oder ein jedes Ladevorrichtungsmodul anfänglich nach dem Programmteil angeordnet ist.
  • Das Koordinatormodul behält bevorzugterweise bedeutungslose Daten innerhalb des Ladevorrichtungsteils, ausgenommen an der Speicherstelle eines Ladevorrichtungsmoduls, das ausgeführt werden wird. Das oder ein jedes Ladevorrichtungsmodul wird bevorzugterweise anfangs in einer verschlüsselten Form gehalten, wobei das Koordinatormodul so betreibbar ist, dass es entschlüsselt, während es ein Modul in eine temporäre Speicherstelle schreibt.
  • Das Koordinatormodul schreibt, bei seiner Anwendung, bevorzugterweise das oder ein jedes Ladevorrichtungsmodul in eine Adresse, die zum Zeitpunkt des Schreibens ausgewählt wird. Die Auswahl der Adresse erfolgt bevorzugterweise pseudo-zufällig.
  • Die Erfindung stellt auch ein computerlesbares Signal zur Verfügung, das sich in einem Computernetzwerk ausbreitet, um von einem Computer empfangen zu werden, und Informationen trägt, die eine Software-Ladevorrichtungsanordnung gemäß einer der oben angegebenen Definitionen darstellen und die wie zuvor gesagt betreibbar ist, um ein Computerprogramm zur Ausführung durch den Empfangscomputer zu laden.
  • In einem zweiten Aspekt stellt die Erfindung ein Computerprogramm bereit, das, bei der Anwendung, von einem externen Speicher zur Ausführung in eine zugeteilte Region des Hauptspeichers geladen wird, wobei das Programm mit einer Software-Ladevorrichtungsanordnung gemäß einer der oben angegebenen Definitionen verbunden ist.
  • Im Zusammenhang mit diesem Aspekt stellt die Erfindung weiter ein computerlesbares Signal bereit, das sich über ein Computernetzwerk verbreitet und von einem Computer empfangen werden soll, und Informationen trägt, die ein Computerprogramm wie oben definiert darstellen, wobei die Informationen das Computerprogramm und die damit verbundene Software-Ladevorrichtungsanordnung darstellen, wie sie oben in dem vorhergehenden Abschnitt definiert sind.
  • In einem dritten Aspekt stellt die Erfindung eine Suite von Softwaremodulen bereit, die wenigstens ein Koordinatormodul einer Software-Ladevorrichtungsanordnung, wie gemäß dem ersten Aspekt der Erfindung definiert, und mehrere Ladevorrichtungsmodule der Ladevorrichtungsanordnung umfasst, wobei die Ladevorrichtungsmodule Gruppen von Modulen ausbilden, wobei die Module einer jeden Gruppe Anweisungssequenzen enthalten, die in einem jeden Modul unterschiedlich sind und die das gleiche Ergebnis erzielen, wenn sie vollständig ausgeführt sind, wobei eine Software-Ladevorrichtungsanordnung ausgebildet sein kann durch Auswählen des oder eines der Koordinatormodule und eines Ladevorrichtungsmoduls aus der oder einer jeden Gruppe von Ladevorrichtungsmodulen.
  • In einem vierten Aspekt liefert die Erfindung ein Verfahren zum Laden eines Computerprogrammes zur Ausführung von einem externen Speicher in eine zugewiesene Region eines Hauptspeichers, wobei das Koordinatormodul an eine zuvor bestimmte Stelle in der zugewiesenen Region geladen wird und betreibbar ist, um die Ausführung von wenigstens einem Ladevorrichtungsmodul zu koordinieren, wobei das oder ein jedes Ladevorrichtungsmodul betreibbar ist, um wenigstens einen Teil der Ladeoperation durchzuführen, wobei das Koordinatormodul das oder ein jedes Ladevorrichtungsmodul von der Anfangsspeicherstelle des Ladevorrichtungsmoduls zur Ausführung in eine temporäre Speicherstelle schreibt, was die Ausführung des Moduls initiiert, und das Modul nach der Ausführung aus der temporären Speicherstelle löscht.
  • Mehrere Ladevorrichtungsmodule werden bevorzugterweise bereitgestellt, um entsprechende Teile der Ladeoperation durchzuführen. Das Koordinatormodul schreibt bevorzugterweise die Ladevorrichtungsmodule der Reihe nach in eine temporäre Speicherstelle.
  • Bevorzugterweise schreibt das Koordinatormodul das oder ein jedes Ladevorrichtungsmodul in eine temporäre Speicherstelle, die sich innerhalb eines Ladevorrichtungsteils der zugewiesenen Region befindet, die für Ladevorrichtungsoperationen bestimmt ist.
  • Das Koordinatormodul hält Daten, die keine Funktionalität bezüglich der Ladeoperation aufweisen, bevorzugterweise innerhalb des Ladevorrichtungsteils, ausgenommen an der Stelle eines Ladevorrichtungsmoduls, das ausgeführt werden soll. Das Koordinatormodul kann eine verschlüsselte Version des Ladevorrichtungsmoduls entschlüsseln, während es das Modul in eine temporäre Speicherstelle schreibt.
  • Das Koordinatormodul wählt bevorzugterweise zum Zeitpunkt des Schreibens eine Adresse für die temporäre Speicherstelle aus. Die Auswahl der Adresse erfolgt bevorzugterweise pseudo-zufällig.
  • Beispiele der vorliegenden Erfindung werden nun lediglich beispielhaft und unter Bezugnahme auf die beigefügten Zeichnungen detaillierter beschrieben, wobei:
  • 1 ein vereinfachtes Blockdiagramm eines Computersystems ist, mit dem die vorliegende Erfindung verwendet werden kann;
  • 2 in schematischer Form die Inhalte des Hauptspeichers des Systems von 1 während eines herkömmlichen Ladens von Anwendungssoftware veranschaulicht;
  • 3a, 3b und 3c ein vereinfachtes Flussdiagramm des Betriebs der Software-Ladeanordnung für die vorliegende Erfindung bilden;
  • 4a4e den Zustand des Hauptspeichers während eines Ladevorgangs gemäß der vorliegenden Erfindung veranschaulichen; und
  • 5 schematisch die Ausbildung der Software-Ladeanordnung gemäß der vorliegenden Erfindung zeigt.
  • 1 stellt ein vereinfachtes Blockdiagramm eines Computersystems 10 dar, das einen Prozessor 12 enthält, der mit dem Hauptspeicher (RAM) 14, dem externen Speicher 16 (wie beispielsweise einer Festplatte oder anderer Massenspeichervorrichtung) und geeigneten Eingangs- und Ausgangsvorrichtungen verbunden ist, die allgemein mit 18 angegeben sind. Diese können ein Plattenlaufwerk 18a zum Lesen von Daten von einer Diskette oder einem anderem Datenträger 19, oder eine Verbindung mit einem Netzwerk umfassen, wie beispielsweise einem lokalen Netzwerk (LAN) 20 oder dem Internet.
  • Das Computersystem 10 ist ein Mehrzweckcomputersystem, das in der Lage ist, eine Vielzahl von Aufgaben unter Softwaresteuerung durchzuführen. Das System 10 kann von der Art sein, die als IBM-kompatibler Arbeitsplatzrechner (PC) bekannt ist, die Erfindung kann aber auch auf anderen Arten von Computern implementiert sein. Anwendungssoftware (wie beispielsweise Textverarbeitungssoftware) zum Steuern des Systems 10 wird üblicherweise in dem externen Speicher 16 gespeichert, wenn sie nicht erforderlich ist. Wenn die Anwendung zum ersten Mal aufgerufen wird, muss die Anwendung durch Laden aus dem externen Speicher 16 in den RAM 14 installiert werden, wie durch den Pfeil 21 angegeben.
  • Der Ladevorgang 21 wird herkömmlicherweise unter der Kontrolle eines „Ladevorrichtungsprogrammes" ausgeführt, das Sicherheitsüberprüfungen etc., wie oben angegeben, einbauen wird.
  • 2 veranschaulicht schematisch die Inhalte des relevanten Teils des RAM 14 während des Ladevorgangs. Eine Region 22 ist der Anwendung zugeteilt und ist in einen Ladevorrichtungsteil 24 am Beginn der Region 22 und einen Programmteil 26, der dem Ladevorrichtungsteil 24 folgt, aufgeteilt. Es soll verstanden werden, dass relative Begriffe, wie beispielsweise „vor", „nach" etc. verwendet werden, um die Adressen innerhalb des RAM 14 und die Reihenfolge zu bezeichnen, in der sie während der Ausführung der Software gelesen werden.
  • Anfänglich ist die Region 22 leer, wie durch die diagonalen Linien, die durch den Ladevorrichtungsteil 24 und den Programmteil 26 gezogen sind, angegeben.
  • Als eine erste Stufe des Ladeprozesses 21 wird das Betriebssystem des Prozessors 12, bei 24, ein Ladevorrichtungsprogramm installieren, das mit der Anwendung verbunden ist. Die Steuerung wird dann bei 24 an die Ladevorrichtung übergeben. Die Ausführung der Ladevorrichtung wird Sicherheitsüberprüfungen, Initialisierung etc. umfassen, wobei danach die Anwendung aus dem externen Speicher 16 gelesen und in den Programmteil 26 installiert werden wird. Der Betrieb der Ladevorrichtung ist dann abgeschlossen und die Steuerung geht auf die Anwendung über. Die Anwendung ist dann zur Verwendung fertig.
  • Während dieser Ladeoperation kann die Technik des „Reinlegens der Ladevorrichtung" verwendet werden, um die Sicherheit, die von der Ladevorrichtung ausgeführt werden, in der oben beschriebenen Art und Weise zu umgehen. Ein Ladevorgang gemäß der vorliegenden Erfindung, der auf einem Computersystem, wie dem System 10 von 1, ausgeführt werden soll, kann nun detaillierter und mit Bezug auf die 3a, 3b, 3c, 4 und 5 beschrieben werden.
  • 3a veranschaulicht die anfängliche Abfolge von Schritten, die erfolgt, wenn eine Anwendung bei 30 aufgerufen wird. Das Betriebssystem teilt bei 32 Speicher für die Anwendung zu (gemäß dem oben beschriebenen herkömmlichen Schritt). Wo herkömmlicherweise das Betriebssystem dann eine Ladevorrichtung installieren würde, die mit der Anwendung verbunden ist, wird die Anordnung der Erfindung einen damit verbundenen Header installieren, dessen Funktion unten beschrieben wird. Der Header ist ein Programm, das innerhalb der Anwendung in dem äußeren Speicher 16 in der Weise aufgenommen werden wird, in der das Betriebssystem eine Ladevorrichtung zu finden erwarten würde und entsprechend wird der Header bei 34 installiert und dann bei 36 die Steuerung auf ihn übergeben. Dies ändert den Zustand des RAM 14 zu dem in 4a gezeigten Zustand, bei der die zugeteilte Region des Speichers 38 leer ist mit Ausnahme des Headers bei 40. Bei diesem Beispiel ist das Header-Programm am Beginn der Region 38 gezeigt und wird deshalb als „Header" bezeichnet. Es soll jedoch verstanden werden, dass das Programm an einer beliebigen anderen Speicherstelle angeordnet sein könnte, wenn die Speicherstelle so bestimmt ist, dass das Programm wie erforderlich ausgeführt werden kann.
  • 3b und 3c bilden ein Flussdiagramm der Ausführung des Headers. Das Symbol X wird verwendet, um anzugeben, wie sich die zwei Teile des Flussdiagramms miteinander verbinden, um den vollständigen Prozess auszubilden. Anfänglich, bei 39, teilt der Header die zugewiesene Region 38, um Teile als einen Ladevorrichtungsteil 42, der unmittelbar dem Header 40 folgt, einen Anwendungsteil 44 und einen Programmstumpfteil 46 zuzuteilen.
  • Programmstumpfmodule, die beschrieben werden sollen, werden dann bei 48 in dem Programmstumpfteil 46 installiert. Bei diesem Beispiel werden fünf Programmstumpfmodule installiert, die als PROGRAMMSTUMPF 1, PROGRAMMSTUMPF 2 etc. bezeichnet sind, es wird jedoch leicht offensichtlich sein, dass alternativ irgendeine andere Anzahl von Programmstümpfen verwendet werden könnte. Die Region 38 liegt dann in dem in 46 dargestellten Zustand vor.
  • Der Header 40 koordiniert dann die Reihenfolge der Verwendung der Programmstumpfmodule, wie angegeben. Ein Zähler wird bei 50 initialisiert und der entsprechende Programmstumpf wird bei 52 örtlich festgelegt. Bei Schritt 54 teilt der Header innerhalb des Ladervorrichtungsteils 42 dem Programmstumpf eine Speicherstelle zu. Diese Zuteilung kann einem Algorithmus folgen oder zufällig oder pseudo-zufällig sein.
  • Nach einem optionalen Entschlüsselungsschritt 56 wird dann bei 58 der Programmstumpf in die Speicherstelle geschrieben, die bei Schritt 54 zugewiesen wird. Der RAM befindet sich nun in dem in 4c gezeigten Zustand, wobei der Ladevorrichtungsteil 42 mit Ausnahme des Bereiches leer ist, der durch den Programmstumpf besetzt ist, und wobei der Anwendungsteil 44 noch leer ist.
  • Der Header 40 ruft den Programmstumpf bei Schritt 60 auf und wartet dann bei 62 (3c) auf die Vervollständigung der Ausführung des Programmstumpfes. Wenn es ausgeführt wird, wird das Programmstumpfmodul wenigstens einen Teil der Ladeoperation der Anwendung in dem Anwendungsteil 44 durchführen. Dies kann ein beliebiger Teil der Ladeoperation sein, einschließlich des Schreibens von Daten in den Anwendungsteil 44, Durchführen von Sicherheitsüberprüfungen, Initialisieren von Daten oder Registern oder dergleichen. Beispiele hinsichtlich der Art, in der die Ladeoperation in geeigneter Weise aufgeteilt sein kann, werden unten angegeben werden.
  • Wenn ein Programmstumpfmodul erfolgreich ausgeführt worden ist, entfernt der Header den Programmstumpf bei 64 und hinterlässt die entsprechenden Bereiche des RAM leer oder korrumpiert die Daten oder überschreibt den Bereich mit Daten, die bedeutungslos sind hinsichtlich der Ladeoperationen, d. h. diesbezüglich keine Funktionalität aufweisen. Entfernen, Korrumption und Überschreiben werden hierin aus Gründen der Einfachheit als „Löschen" bezeichnet. Dies führt den RAM 14 in den in 4b gezeigten Zustand zurück, sofern nicht der Programmstumpf Daten in den Anwendungsteil 44 geschrieben hat, und mit der Ausnahme, dass ein Teil der Region 22 bedeutungslose Daten enthalten kann, statt wie in 4b gezeigt leer zu sein.
  • Der Wert von N wird dann bei 66 erhöht und es wird bei 68 eine Entscheidung gefällt, um zu bestimmen, ob weitere Programmstumpfmodule auszuführen sind. Dies wird durch Vergleichen der Inkrementwerte von N mit Nmax erreicht, der auf die Gesamtzahl von Programmstumpfmodulen festgesetzt ist, und wiederholtes Zurückkehren zu Schritt 52, bis N Nmax überschreitet.
  • Während der zweiten Ausführung der Schleife wird in entsprechender Weise das Programmstumpfmodul PROGRAMMSTUMPF 2 in den Ladevorrichtungsteil 42 (4d) geschrieben und ausgeführt. Dieser Zyklus wird fortgesetzt, bis alle Programmstumpfmodule ausgeführt worden sind. Der RAM 14 wird sich dann in dem Zustand von 4e befinden, wobei der Ladevorrichtungsteil 42 leer ist, die Anwendung in dem Anwendungsteil 44 installiert ist und die Programmstumpfmodule in ihren ursprünglichen Positionen verbleiben.
  • Die Steuerung wird dann bei 70 an die Anwendung übergeben, die dann in der Lage ist, in der normalen Art und Weise zu funktionieren.
  • Der Betrieb der oben beschriebenen Softwareladevorrichtungsanordnung liefert einen Schutz gegen das „Reinlegen der Ladevorrichtung" wie folgt. Zuerst erscheinen die Programmstumpfmodule in dem Ladevorrichtungsteil 42 lediglich transient. Während des größten Teils der Ladeoperation ist der größte Teil des Ladevorrichtungsteils 42 leer oder enthält bevorzugterweise Daten, die bedeutungslose Daten sind (d. h. nicht funktional bezüglich des Ladens). Bedeutungslose Daten sind bevorzugt, um den Ladevorrichtungsteil 42 leer zu lassen, da bedeutungslose Daten dabei helfen können, ein Programm zu verwirren, das die Ladevorrichtung reinlegt. Zweitens können die Programmstumpfmodule, wenn sie in dem Ladevorrichtungsteil 42 auftreten, bei einer jeden Gelegenheit eine andere Speicherstelle belegen (entsprechend der in Schritt 54 zufällig oder pseudo-zufällig zugewiesenen Speicherstelle (3b)). Entsprechend ist es unwahrscheinlich, dass ein Programm, das die Ladevorrichtung reinlegt und das eine Zugriffsanweisung in einer speziellen Adresse sucht (d. h. einer Adresse, die relativ zum Start der zugewiesenen Region 38 fixiert oder eine Absolutadresse ist), die Zielinstruktion an dieser Speicherstelle findet. Man kann erwarten, dass ein einfaches Programm, das die Ladevorrichtung reinlegt, bei den meisten Fällen, bei denen die Anwendung aufgerufen wird, daran scheitert, die Sicherheit zu umgehen, und es ist somit unwahrscheinlich, dass es entweder bei einer jeden Gelegenheit zu der Kopie der Anwendung oder zu anderen Kopien der gleichen Anwendung generisch ist.
  • Der Erfolg eines Programms, das die Ladevorrichtung reinlegt, könnte verbessert sein, wenn es möglich wäre, vorab die Speicherstelle zu bestimmen, die einem speziellen Progranunstumpfmodul zugewiesen werden würde. Obwohl in der Praxis unwahrscheinlich, könnte dies theoretisch erreicht werden durch Analysieren des Algorithmus innerhalb des Headers 40, durch den Programmstumpfmodule Stellen innerhalb des Ladevorrichtungsteils 24 zugeteilt werden. Herkömmliche Techniken wie beispielsweise Verschlüsselung können verwendet werden, um den Header 40 gegenüber einem derartigen Angriff zu schützen, die Erfindung fasst aber einen weiteren Schutz in der folgenden Form ins Auge, der wirksam ist, selbst wenn der Speicherstellenzuteilungsalgorithmus analysiert worden ist.
  • Die beschriebene Softwareladevorrichtungsanordnung besteht aus einem Header und fünf Programmstumpfmodulen. Die Softwareladevorrichtung kann deshalb als ein Softwareblock dargestellt werden, der diese Bestandteile enthält, wie auf der rechten Seite von 5 dargestellt. Es soll insbesondere festgestellt werden, dass dies vollständig schematisch ist, um vorzuschlagen, dass der Header und die Programmstumpfmodule im Speicher nacheinander enthalten sein werden. Es ist aus der obigen Beschreibung (insbesondere 4) offenkundig, dass bei der Anwendung, insbesondere innerhalb des RAM 14, der Header und die Programmstumpfmodule nicht konsekutiv gehalten werden.
  • Der Header und die Programmstumpfmodule bilden eine in 5 mit 72 markierte Anordnung. Die Anordnung 72 wird mit einer Kopie der Anwendung im externen Speicher 16 verbunden sein, wie dies beschrieben worden ist. Die Anordnung 72 wird jedoch nicht für jede authorisierte Kopie der Anwendungssoftware identisch sein. Die Wirkung einer jeden Anordnung 72 wird jedoch in einem jeden Fall und wie oben beschrieben die gleiche sein. Dies wird wie folgt erreicht.
  • Die Anordnung 72, wie sie in 5 dargestellt ist, wird ausgebildet durch eine Auswahl aus einer Softwarebibliothek 74, die auf der linken Seite von 5 dargestellt ist. Die Bibliothek umfasst eine Gruppe 76 aus Headermodulen 78, die mit HEADER 1 und HEADER 2 bezeichnet sind. Die Module 78 sind unterschiedlich beschrieben. Das heißt, die Anweisungssequenzen innerhalb der Module 78 korrespondieren nicht überall in den Modulen 78. Die Wirkung eines jeden der Module 78 ist jedoch identisch, wenn sie ausgeführt werden.
  • Dies kann erreicht werden durch erneutes Schreiben einiger der durch die Module 78 ausgeführten Funktionen, durch Ändern der Reihenfolge von Anweisungen innerhalb der Sequenz oder dergleichen. Alternativ könnte ein jeder Header 78 einen anderen Algorithmus zum Erzeugen von pseudozufälligen Zuteilungen für Programmstumpfmodule innerhalb des Ladevorrichtungsteiles 42 einbauen.
  • In ähnlicher Weise umfasst die Bibliothek 74 fünf Programmstumpfgruppen 80 (PROGRAMMSTUMPF 1 bis PROGRAMMSTUMPF 5), die, in diesem Beispiel, jeweils fünf alternative Programmstumpfmodule 82 enthalten, die in der ersten Programmstumpfgruppe 80 mit PROGRAMMSTUMPF 1A bis PROGRAMMSTUMPF 1E bezeichnet sind. Wie bezüglich der Headermodule 78 beschrieben sind die Programmstumpfe wiederum innerhalb einer jeden Gruppe in dem Ausmaß austauschbar, dass, nach der Ausführung, jeder genau die gleichen Ergebnisse erzielen wird, wie ein jedes andere Programmstumpfmodul innerhalb der selben Gruppe 80, aber die Anweisungssequenzen innerhalb eines jeden Programmstumpfmoduls der gleichen Gruppe 80 insoweit nicht identisch sind, als dass sie sich in der Reihenfolge oder in der Art und Weise, in der sie geschrieben worden sind, unterscheiden.
  • Die anderen fünf Programmstumpfgruppen 80 enthalten ebenfalls jeweils fünf austauschbare Programmstumpfmodule.
  • Die Bibliothek 74 kann in der folgenden Art und Weise verwendet werden. Wenn eine Kopie einer Anwendungssoftware geschützt werden soll, wird eine Anordnung 72 ausgebildet durch Auswählen eines Softwareblocks aus einer jeden der Gruppen 76, 80, um die Anordnung 72 auszubilden. Dies führt zu einer Anordnung 72, die in der im Zusammenhang mit den 3a, 3b, 3c und 4 beschriebenen Art und Weise funktionieren wird. Die Bibliothek 74 liefert, in diesem Beispiel, 6250 (5 × 5 × 5 × 5 × 5 × 2) unterschiedliche Kombinationen von Headern und Programmstumpfmodulen. Wenn ein Programm, das eine Ladevorrichtung reinlegt, versucht, den durch eine Anordnung 72 bereitgestellten Schutz zu umgehen, wird konsequenterweise ein jegliches generische Programm, das die Ladevorrichtung reinlegt und das in jeder Hinsicht annimmt, dass die Ladeanordnung bei jeder Gelegenheit oder für eine jede Kopie der Anwendung die gleiche sein wird, fehlerhaft sein und nicht in der Lage sein, zu funktionieren. Es kann leicht verstanden werden, dass durch Erhöhen der Anzahl von Gruppen in der Bibliothek 74 und durch Erhöhen der Anzahl von Modulen innerhalb einer jeden Gruppe die Gesamtzahl von Möglichkeiten ohne eine echte Begrenzung erhöht werden kann. Man erwartet, dass es dies erforderlich macht, dass ein erfolgreiches Programm, das die Ladevorrichtung reinlegt, so ausgeklügelt ist, dass es einem Programm gleichkommt, das ein neues Problem bei jeder Gelegenheit löst, d. h. in keiner Weise generisch ist. Man erwartet, dass das Ausmaß an technischer Raffinesse, das somit erforderlich ist, ausreichend schwierig zu überwinden ist, um die Ladevorrichtung reinzulegen, und damit für die Mehrzahl derer so unattraktiv macht, die versuchen würden, die Verwendung von unlizenzierter Software zu ermöglichen.
  • Die Ladeoperation kann unterteilt werden in irgendeiner passenden Art und Weise, um Programmstumpfmodule auszubilden, nach der Gruppen von Programmstumpfmodulen, die die Bibliothek bilden, geschrieben werden können. Beispielsweise könnten sich zusätzlich zu dem Primärprozess des Ladens der Anwendung in den Anwendungsteil 44 Module mit dem Entschlüsseln, Umbauen oder Verschlüsseln des IAT, Überprüfen auf Manipulation oder Zeichen für nicht-authorisierte Aktivität durch Überprüfen der zyklischen Blocksicherungs(CRC)-Signaturen oder auf die Anwesenheit von Debuggern hin befassen.
  • Eine Softwareladeanordnung von der oben beschriebenen Art kann auf verschiedenen Wegen einem möglichen Anwender zur Verfügung gestellt werden, wie beispielsweise einem Softwarehersteller, der versucht, eine Anwendung gemäß dieser Erfindung zu schützen. Beispielsweise kann eine Ladevorrichtungsanordnung, die wie oben beschrieben, insbesondere bezüglich 5 ausgebildet ist, aufgezeichnet werden auf einem Aufzeichnungsmedium zum Übergeben an einen potentiellen Anwender oder kann verschickt werden durch Erzeugen eines Signals, das Informationen trägt, die die Anordnung darstellen, wobei sich das Signal zu dem potentiellen Anwender durch ein geeignetes Medium, wie beispielsweise ein Computernetzwerk verbreitet. In ähnlicher Weise kann ein Programm, das eine Ladevorrichtungsanordnung von der beschriebenen Art enthält, auf einem Aufzeichnungsmedium zur Abgabe an einen Kunden aufgezeichnet sein oder es kann über ein Netzwerk verschickt werden, indem ein Signal, wie oben dargelegt erzeugt wird.

Claims (23)

  1. Softwareladevorrichtung (72), betreibbar zum Laden eines Computerprogramms (APP) aus einem externen Speicher (16) in eine zugeteilte Region (38) des Hauptspeichers (14) zur Ausführung, wobei die Softwareladevorrichtung mehrere Softwaremodule aufweist und ein Koordinatormodul (40), das bei Benutzung an einer vorbestimmten Position der zugeteilten Region geladen wird und betreibbar ist, um die Ausführung des oder jeden anderen Moduls zu koordinieren, und mindestens ein Ladevorrichtungsmodul (46) umfaßt, das betreibbar ist, um mindestens einen Teil der Ladeoperation durchzuführen, wobei das Koordinatormodul ferner betreibbar ist, um das oder jedes Ladevorrichtungsmodul aus der Anfangsspeicherstelle des Ladevorrichtungsmoduls in eine temporäre Speicherstelle (42) zur Ausführung zu schreiben, die Ausführung des Moduls einzuleiten und das Modul nach der Ausführung aus der temporären Speicherstelle zu löschen.
  2. Softwareladevorrichtung (72) nach Anspruch 1, wobei mehrere Ladevorrichtungsmodule (46) vorgesehen sind, die jeweiligen Teile der Ladeoperation bereitzustellen.
  3. Softwareladevorrichtung (72) nach Anspruch 2, wobei die mehreren Ladevorrichtungsmodule (46) der Reihe nach in eine temporäre Speicherstelle (42) geschrieben werden.
  4. Softwareladevorrichtung (72) nach Anspruch 2 oder 3, wobei jedes Ladevorrichtungsmodul (46) aus einer Gruppe (80) von Modulen ausgewählt wird, wobei die Module (82) jeder Gruppe Anweisungssequenzen enthalten, die in jedem Modul verschieden sind und die bei vollständiger Ausführung dasselbe Ergebnis erzielen.
  5. Softwareladevorrichtung (72) nach einem der Ansprüche 1 bis 4, wobei ein Ladevorrichtungsteil (42) der zugeteilten Region (38) für Ladevorrichtungsoperationen ausgewiesen ist, wobei die oder jede temporäre Speicherstelle in dem Ladevorrichtungsteil angeordnet ist.
  6. Softwareladevorrichtung (72) nach Anspruch 5, wobei das oder jedes Ladevorrichtungsmodul (46) anfänglich außerhalb des Ladevorrichtungsteils (42) angeordnet ist.
  7. Softwareladevorrichtung (72) nach Anspruch 5 oder 6, wobei ein Programmteil (44) der zugeteilten Region (38) für das Computerprogramm (APP) ausgewiesen ist, wobei das oder jedes Ladevorrichtungsmodul (46) anfänglich nach dem Programmteil angeordnet ist.
  8. Softwareladevorrichtung (72) nach Anspruch 5, 6 oder 7, wobei das Koordinatormodul (40) bedeutungslose Daten in dem Ladevorrichtungsteil (42) hält, außer an der Speicherstelle eines Ladevorrichtungsmoduls (46), das gerade ausgeführt wird.
  9. Softwareladevorrichtung (72) nach einem der vorhergehenden Ansprüche, wobei das oder jedes Ladevorrichtungsmodul (46) anfänglich in verschlüsselter Form gehalten wird, wobei das Koordinatormodul (40) betreibbar ist, um während des Schreibens eines Moduls in eine temporäre Speicherstelle zu entschlüsseln.
  10. Softwareladevorrichtung (72) nach einem der vorhergehenden Ansprüche, wobei das Koordinatormodul (40) während der Benutzung das oder jedes Ladevorrichtungsmodul in eine Adresse schreibt, die zum Zeitpunkt des Schreibens gewählt wird.
  11. Softwareladevorrichtung (72) nach Anspruch 10, wobei die Auswahl der Adresse pseudozufällig ist.
  12. Computerlesbares Signal, das sich über ein Computernetzwerk ausbreitet, um von einem Computer empfangen zu werden, und das Informationen führt, die eine Softwareladevorrichtung (72) nach einem der Ansprüche 1 bis 11 repräsentieren, und die wie besagt betreibbar sind, um ein Computerprogramm (APP) zur Ausführung durch den Empfängercomputer zu laden.
  13. Computerprogramm (APP) mit der eine Softwareladevorrichtung (72) zum Laden des Computerprogramms aus einem externen Speicher (16) in eine zugeteilte Region (38) des Hauptspeichers (14) zur Ausführung assoziiert ist, wobei die Softwareladevorrichtung beliebigen der Ansprüche 1 bis 11 entspricht.
  14. Computerlesbares Signal, das sich über ein Computernetzwerk ausbreitet, um von einem Computer empfangen zu werden, und das Informationen führt, die ein Computerprogramm nach Anspruch 13 repräsentieren, wobei die Informationen das Computerprogramm und die assoziierte Softwareladevorrichtung repräsentieren.
  15. Suite (74) von Softwaremodulen (78, 82) mit mindestens einem Koordinatormodul (78) und mehreren Ladevorrichtungsmodulen (82), wobei das oder jedes Koordinatormodul, wenn es an eine vorbestimmte Position einer Hauptspeicherregion, die für die Ausführung eines Computerprogramms ausgewiesen ist, geladen wird, betreibbar ist, um die Ausführung von Ladevorrichtungsmodulen durch Schreiben eines Ladevorrichtungsmoduls aus einer Anfangsspeicherstelle in eine temporäre Speicherstelle zur Ausführung zu koordinieren, die Ausführung des Moduls einzuleiten und das Modul nach der Ausführung aus der temporären Speicherstelle zu löschen, und die Ladevorrichtungsmodule jeweils betreibbar sind, um mindestens einen Teil der Operation des Ladens des Computerprogramms durchzuführen, und die Ladevorrichtungsmodule Gruppen (80) von Modulen bilden, wobei die Module jeder Gruppe Anweisungssequenzen enthalten, die in jedem Modul verschieden sind und die bei vollständiger Ausführung dasselbe Ergebnis erzielen, wodurch eine Softwareladevorrichtung (72) nach einem der Ansprüche 1 bis 11 durch Auswählen des einen oder eines der Koordinatormodule und eines Ladevorrichtungsmoduls aus der oder jeder Gruppe von Ladevorrichtungsmodulen gebildet werden kann.
  16. Verfahren zum Laden eines Computerprogramms (APP) aus einem externen Speicher (16) in eine zugeteilte Region (38) des Hauptspeichers zur Ausführung, wobei ein Koordinatormodul (40) in eine vorbestimmte Position in der zugeteilten Region geladen wird und betreibbar ist, um die Ausführung von mindestens einem Ladevorrichtungsmodul (46) zu koordinieren, wobei das oder jedes Ladevorrichtungsmodul betreibbar ist, um mindestens einen Teil der Ladeoperation auszuführen, wobei das Koordinationsmodul das oder jedes Ladevorrichtungsmodul aus der Anfangsspeicherstelle des Ladevorrichtungsmoduls in eine temporäre Speicherstelle (42) zur Ausführung schreibt, die Ausführung des Moduls einleitet und das Modul nach der Ausführung aus der temporären Speicherstelle löscht.
  17. Verfahren nach Anspruch 16, wobei mehrere Ladevorrichtungsmodule (46) vorgesehen sind, die jeweilige Teile der Ladeoperation bereitzustellen.
  18. Verfahren nach Anspruch 17, wobei das Koordinatormodul (40) die Ladevorrichtungsmodule (46) der Reihe nach in eine temporäre Speicherstelle (42) schreibt.
  19. Verfahren nach einem der Ansprüche 16 bis 18, wobei das Koordinatormodul (40) das oder jedes Ladevorrichtungsmodul (46) in eine temporäre Speicherstelle (42) schreibt, die in einem Ladevorrichtungsteil der zugeteilten Region (38) angeordnet ist, wobei der Ladevorrichtungsteil für Ladevorrichtungsoperationen ausgewiesen ist.
  20. Verfahren nach einem der Ansprüche 16 bis 19, wobei das Koordinatormodul (40) in dem Ladevorrichtungsteil (42), außer an der Speicherstelle eines Ladevorrichtungsmoduls (46), das gerade ausgeführt wird, Daten hält, die in bezug auf die Ladeoperation keine Funktionalität aufweist.
  21. Verfahren nach einem der Ansprüche 16 bis 20, wobei das Koordinatormodul (40) eine verschlüsselte Version des Ladevorrichtungsmoduls (46) entschlüsselt, während es das Modul in eine temporäre Speicherstelle (42) schreibt.
  22. Verfahren nach einem der Ansprüche 16 bis 21, wobei das Koordinatormodul (40) eine Adresse für die temporäre Speicherstelle zum Zeitpunkt des Schreibens wählt.
  23. Verfahren nach Anspruch 22, wobei die Auswahl der Adresse pseudozufällig ist.
DE60212169T 2001-10-17 2002-10-11 Laden von software Expired - Lifetime DE60212169T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB0124869A GB2381090B (en) 2001-10-17 2001-10-17 Software loading
GB0124869 2001-10-17
PCT/GB2002/004643 WO2003034212A1 (en) 2001-10-17 2002-10-11 Software loading

Publications (2)

Publication Number Publication Date
DE60212169D1 DE60212169D1 (de) 2006-07-20
DE60212169T2 true DE60212169T2 (de) 2007-04-19

Family

ID=9923977

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60212169T Expired - Lifetime DE60212169T2 (de) 2001-10-17 2002-10-11 Laden von software

Country Status (6)

Country Link
US (1) US7293266B2 (de)
EP (1) EP1440369B1 (de)
AT (1) ATE329308T1 (de)
DE (1) DE60212169T2 (de)
GB (1) GB2381090B (de)
WO (1) WO2003034212A1 (de)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006056646A1 (en) * 2004-11-24 2006-06-01 Nokia Corporation Method for the secure interpretation of programs in electronic devices
FI20041517A0 (fi) 2004-11-25 2004-11-25 Nokia Corp Menetelmä elektroniikkalaitteiden ohjelmien turvalliseen tulkintaan
US20080301667A1 (en) * 2007-05-30 2008-12-04 Google Inc. Dynamically Updating Software Applications on a Device
US20080301669A1 (en) * 2007-05-30 2008-12-04 Google Inc. Dynamically Self-Updating by a Software Application on a Device
US20080301672A1 (en) * 2007-05-30 2008-12-04 Google Inc. Installation of a Software Product on a Device with Minimal User Interaction
US20080301660A1 (en) * 2007-05-30 2008-12-04 Google Inc. Maintaining Multiple Versions of a Software Application on a Device
EP2075728A1 (de) * 2007-12-27 2009-07-01 Thomson Licensing Verfahren und Vorrichtung für Codeschutz
US9152401B2 (en) * 2009-05-02 2015-10-06 Citrix Systems, Inc. Methods and systems for generating and delivering an interactive application delivery store
EP2674891A1 (de) 2012-06-12 2013-12-18 Thomson Licensing Verfahren, Vorrichtung und Computerprogrammproduktunterstützung zur Ausführung eines verschlüsselten Computercodes

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4024504A (en) * 1973-12-21 1977-05-17 Burroughs Corporation Firmware loader for load time binding
JPS59231650A (ja) * 1983-06-14 1984-12-26 Usac Electronics Ind Co Ltd ソフトウエア保護処理方式
JPH04215153A (ja) * 1990-12-14 1992-08-05 Matsushita Electric Ind Co Ltd 情報記録再生装置
US6134324A (en) * 1991-07-31 2000-10-17 Lsi Logic Corporation Method and system for distributing a plurality of software products, and limiting access thereto
US5812848A (en) * 1995-08-23 1998-09-22 Symantec Corporation Subclassing system for computer that operates with portable-executable (PE) modules
US5933503A (en) * 1996-03-15 1999-08-03 Novell, Inc Controlled modular cryptography apparatus and method
DE69709788T2 (de) * 1996-08-09 2002-09-19 Citrix Systems Res & Dev Ltd Isolierter ausführungsort
US6141698A (en) * 1997-01-29 2000-10-31 Network Commerce Inc. Method and system for injecting new code into existing application code
US6006190A (en) * 1997-04-28 1999-12-21 Tartaroukos Llc Computer implemented method and a computer system for enforcing software licenses
US6385567B1 (en) * 1997-07-31 2002-05-07 Microsoft Corporation Program-module substitution in a program loader for multiple-platform emulation
JPH1185526A (ja) * 1997-09-12 1999-03-30 Hitachi Ltd プログラムロード方法
US6185678B1 (en) * 1997-10-02 2001-02-06 Trustees Of The University Of Pennsylvania Secure and reliable bootstrap architecture
EP0907285A1 (de) * 1997-10-03 1999-04-07 CANAL+ Société Anonyme Datenfernladung
US6532451B1 (en) * 1998-03-23 2003-03-11 Novell, Inc. Nested strong loader apparatus and method
US6751735B1 (en) * 1998-03-23 2004-06-15 Novell, Inc. Apparatus for control of cryptography implementations in third party applications
US6701433B1 (en) * 1998-03-23 2004-03-02 Novell, Inc. Method and apparatus for escrowing properties used for accessing executable modules
US6226747B1 (en) * 1998-04-10 2001-05-01 Microsoft Corporation Method for preventing software piracy during installation from a read only storage medium
FI990461A0 (fi) * 1999-03-03 1999-03-03 Nokia Mobile Phones Ltd Menetelmä ohjelmiston lataamiseksi palvelimelta päätelaitteeseen
US6490722B1 (en) * 1999-03-30 2002-12-03 Tivo Inc. Software installation and recovery system
US6889376B1 (en) * 1999-05-12 2005-05-03 Treetop Ventures, Llc Method for migrating from one computer to another
US6618855B1 (en) * 1999-05-27 2003-09-09 Sun Microsystems, Inc. Caching untrusted modules for module-by-module verification
US6618769B1 (en) * 1999-05-27 2003-09-09 Sun Microsystems, Inc. Module-by-module verification
US6701334B1 (en) * 1999-07-13 2004-03-02 Sun Microsystems, Inc. Methods and apparatus for implementing individual class loaders
US6698017B1 (en) * 1999-07-16 2004-02-24 Nortel Networks Limited Software migration on an active processing element
US6813762B1 (en) * 2000-02-22 2004-11-02 Freescale Semiconductor, Inc. Method for processing program files in a programming language capable of dynamic loading
GB0017478D0 (en) * 2000-07-18 2000-08-30 Bit Arts Ltd Computer software installation
US20020071559A1 (en) * 2000-07-20 2002-06-13 Christensen Jakob Hjorth Method and apparatus for providing electronic data
US6810519B1 (en) * 2000-09-29 2004-10-26 International Business Machines Corporation Achieving tight binding for dynamically loaded software modules via intermodule copying
US6851111B2 (en) * 2000-12-15 2005-02-01 International Business Machines Corporation System and method for class loader constraint checking
US6915511B2 (en) * 2001-05-22 2005-07-05 Sun Microsystems, Inc. Dynamic class reloading mechanism
US7028294B2 (en) * 2001-06-08 2006-04-11 Texas Instruments Incorporated Linking of applications into devices having overlays and shadow memories
US7069550B2 (en) * 2001-12-21 2006-06-27 International Business Machines Corporation Delegation-based class loading of cyclically dependent components
US7039923B2 (en) * 2002-04-19 2006-05-02 Sun Microsystems, Inc. Class dependency graph-based class loading and reloading
US7082600B1 (en) * 2002-11-04 2006-07-25 Savaje Technologies, Inc. Method and apparatus for integrating a computer application programming language runtime environment with an operating system kernel
US6961852B2 (en) * 2003-06-19 2005-11-01 International Business Machines Corporation System and method for authenticating software using hidden intermediate keys
US7099791B2 (en) * 2004-05-21 2006-08-29 Credence Systems Corporation System and method for linking and loading compiled pattern data

Also Published As

Publication number Publication date
ATE329308T1 (de) 2006-06-15
US20030093660A1 (en) 2003-05-15
GB0124869D0 (en) 2001-12-05
EP1440369B1 (de) 2006-06-07
GB2381090B (en) 2005-02-02
US7293266B2 (en) 2007-11-06
DE60212169D1 (de) 2006-07-20
GB2381090A (en) 2003-04-23
WO2003034212A1 (en) 2003-04-24
EP1440369A1 (de) 2004-07-28

Similar Documents

Publication Publication Date Title
DE60127310T2 (de) Vorrichtung zum schutz digitaler daten
DE60301782T2 (de) Apparate und verfahren zum entschüsseln von verschlüsselten datenblöcken und zum lokalisieren der verschlüsselten datenblöcke im für die ausführung verwendeten speicherbereich
DE69927022T2 (de) Verfahren zur steuerung der benutzung von softwarekomponenten
WO2017137256A1 (de) Verfahren und ausführungsumgebung zum gesicherten ausführen von programmbefehlen
DE102009041176B4 (de) Compiler-System und Verfahren zum Kompilieren eines Quellencodes zu einem verschlüsselten Maschinensprachcode
DE10225664A1 (de) System und Verfahren zum Prüfen von Systemabrufereignissen mit Systemabrufumhüllungen
DE112011104325T5 (de) Computerlesbare Speichermedien zum Verschlüsseln und Entschlüsseln einer virtuellen Platte
DE60212169T2 (de) Laden von software
DE102018132970A1 (de) Verfahren und Vorrichtung zur Isolation von sensiblem nichtvertrauenswürdigem Programmcode auf mobilen Endgeräten
EP1798653B1 (de) Verfahren, Computerprogrammprodukt und Vorrichtung zum Schützen eines einen Funktionsblock aufweisenden Programms
EP1271310B1 (de) Verfahren zum Erweitern einer mittels eines Installationsprogramms zu installierenden Anwendung um eine Funktion und Computerprogrammprodukt
DE102009054114A1 (de) Verfahren und Vorrichtung zum Zugreifen auf Steuerungsdaten gemäß einer bereitgestellten Rechteinformation
DE102004057490B4 (de) Vorrichtung und Verfahren zum Verarbeiten eines Programmcodes
EP1439446A1 (de) Verfahren zum Erweitern eines Programms um eine Kopierschutzfunktion
DE602004002241T2 (de) Schutz eines auf ausführungwartenden Programms in einem Speicher für einen Mikroprozessor
DE60017438T2 (de) System zur betriebsmittelzugriffsteuerung
DE102005046696B4 (de) Verfahren zum Erzeugen von geschütztem Programmcode und Verfahren zum Ausführen von Programmcode eines geschützten Computerprogramms sowie Computerprogrammprodukt
EP1032871A2 (de) Verfahren und anordnung zum laden von daten für grundlegende systemroutinen eines datenverarbeitungssystems
WO2010089083A2 (de) Vorrichtung und verfahren zum verhindern von unautorisierter verwendung und/oder manipulation von software
DE112021005119T5 (de) Zugriff auf software durch heterogene verschlüsselung
DE602004001293T2 (de) Programmintegritätsprüfung mittels Statistiken
EP1318451B1 (de) Verfahren zum Ausführen eines Programms auf einem Computer
EP1879128B1 (de) Abgesicherter Programmcode
EP1105798B1 (de) Verfahren, anordnung sowie ein satz mehrerer anordnungen zum schutz mehrerer programme und/oder mehrerer dateien vor einem unbefugten zugriff durch einen prozess
DE102015119140A1 (de) Verfahren zum Steuern des Zugriffs auf verschlüsselte Dateien und Computersystem

Legal Events

Date Code Title Description
8364 No opposition during term of opposition