EP1979848A1 - Verfahren und vorrichtung zum nachweis einer raubkopie - Google Patents

Verfahren und vorrichtung zum nachweis einer raubkopie

Info

Publication number
EP1979848A1
EP1979848A1 EP06793013A EP06793013A EP1979848A1 EP 1979848 A1 EP1979848 A1 EP 1979848A1 EP 06793013 A EP06793013 A EP 06793013A EP 06793013 A EP06793013 A EP 06793013A EP 1979848 A1 EP1979848 A1 EP 1979848A1
Authority
EP
European Patent Office
Prior art keywords
document
software
procedure
writing
characteristic parameters
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.)
Ceased
Application number
EP06793013A
Other languages
English (en)
French (fr)
Inventor
Bernhard Aghte
Gero BÄSE
Norbert Oertel
Marcel Wagner
Ivan Kopilovic
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.)
Unify GmbH and Co KG
Original Assignee
Siemens Enterprise Communications GmbH and Co KG
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 Siemens Enterprise Communications GmbH and Co KG filed Critical Siemens Enterprise Communications GmbH and Co KG
Publication of EP1979848A1 publication Critical patent/EP1979848A1/de
Ceased 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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities

Definitions

  • the invention relates to a method according to claim 1 and a device according to claim 6.
  • the invention is based on the object of specifying a method and a device with which an at least partial copy of a second software is detected in a first software, wherein the method and the device is both robust against changes of the copy as well as existing software applicable ,
  • This method makes it possible to prove a pirated copy of a second software or parts of a second software in a first software by recording characteristic parameters during the respective execution.
  • the correlation value it is possible, despite changes in the first software compared to the second software, to recognize the pirated copy because the correlation value describes a similarity between two sections of the first and the second software.
  • no changes are required in the first or second software since the recording or recording of the characteristic parameters can be carried out by means of a standalone program which evaluates functions of the operating system. Thus, even existing software can be examined for pirated copies.
  • a value of the parameter group and / or an export time of the Used procedure change.
  • specific behavioral properties of the procedure instance to be invoked and / or invoked can be accurately analyzed.
  • a time chart can be created indicating when the procedure change occurred.
  • a plurality of sections of the second document are correlated with the associated characteristic parameters with at least a portion of the first document and, as a result, an associated correlation value is formed for each correlated section of the second document and a copy displayed if a plurality of the correlation values are greater than a respective threshold is.
  • a reduction in a rate of erroneously detected pirate copies can be achieved because more than one correlation value is considered for determining whether piracy or not piracy.
  • Threshold and the other correlation values are each greater than a second threshold. This alternative also makes it possible to reduce pirated copies erroneously detected.
  • the invention also relates to a device for detecting a pirated copy, in which a first software comprises a copy of at least part of a second software, with
  • a second means for executing the second software wherein during a write and / or read operation of a parameter group of a procedure instance to and / or from a stack memory, at least one parameter characteristic of this writing and / or reading operation in a time sequence for an occurrence of the writing and / or reading operations is recorded in a second document;
  • the method can be implemented and executed.
  • the method or the device can be implemented as hardware, as software running on a processor or as a combination of hardware and software.
  • Figure 1 is a program flow of a software in which a plurality of procedure units are called
  • Figure 2 shows an occupancy of a stack during a
  • FIG. 3 is a flow chart of an embodiment
  • Figure 5 shows an apparatus for performing the method for detecting a pirated copy.
  • FIGS. 1 to 5 Elements with the same function and mode of operation are provided in FIGS. 1 to 5 with the same reference numerals.
  • FIG. 1 shows a program sequence of a software.
  • the software is in the form of a sequence of machine instructions and is executed, for example, on a microprocessor or a digital signal processor.
  • This software The machine commands could be created by compiling and linking a C program using a development package, such as Microsoft Visual Studio.
  • the software can be divided into several procedure instances PI. Within each procedure instance PI, machine instructions are executed sequentially. In doing so, other procedure instances are called during or at the end of the respective procedure instance, i. a procedure change takes place. These calls cause data, such as register contents of the microprocessor, to be read from or written to a stack.
  • a second procedure instance PI2 is called during the course of a first procedure instance PI1.
  • the register contents of the microprocessor are written to the stack memory SP by means of the write operation SV at the time before the procedure change.
  • values of local variables of the first procedure instance PI1 can also be stored on the stack.
  • a parameter group PG of the procedure instance PI, PIl is written to or read from the stack SP.
  • the parameter group PG includes the register contents and local variables of the first procedure instance PIl.
  • the first procedure instance PIl represents a calling procedure instance and the second procedure instance PI2 represents a called procedure instance.
  • the individual machine instructions of the second procedure instance are processed.
  • the program flow returns to the first procedure instance PIl.
  • the data stored at the time of the procedure change from the first to the second procedure instance are read from the stack memory SP by means of the read operation LV.
  • These read data include, for example, register contents which are written to the corresponding registers of the microprocessor or also contents of local data which are assigned to the local variables of a procedure instance PI1.
  • a third procedure instance PI3 will be referred to in the following.
  • a write operation SV according to the above description takes place.
  • a fourth procedure instance PI4 is called, whereby again a writing process SV is executed.
  • the third process instance PI3 is jumped back, wherein a read operation is carried out.
  • This third procedure instance PI3 is continued until its end and then, with the aid of another read operation, the first procedure instance PI1 is called.
  • the data belonging to the respective procedure instances are written to the stack SP or read from the stack SP.
  • FIG. 2 a level diagram with the level F of the stack SP as a function of the flow of the software, that is, depending on the executed procedure instances reproduced.
  • the fill level F is indicated, for example, in bytes, with each graduation mark of the fill level F in FIG. 2 corresponding to 100 bytes in each case.
  • 250 bytes are written to the stack memory.
  • the 250 bytes are read from the stack.
  • the procedure is analogous.
  • the filling level diagram of the stack it can be seen that during a writing process the filling level of the stack increases, whereas in a reading process the filling level is reduced.
  • the method according to the invention detects characteristic parameters CP1,..., CP4 for those execution times AZ at which a procedure change takes place.
  • These characteristic parameters represent specific properties of the calling and / or the called procedure instance.
  • the characteristic parameters may, for example, correspond to one or more values of the parameter group PG, such as a specific register content.
  • a characteristic parameter can also be generated from a summary or evaluation of the parameter group PG detected for the procedure change.
  • a first characteristic parameter CP1 can correspond to a number of bytes of all local variables of the calling procedure instance PI1.
  • 250 bytes were written to the stack memory during the procedure change from PI1 to PI2.
  • These 250 bytes comprise, for example, 64 bytes, which include the register values, and 186
  • a detection of the parameter group PG is realized, for example, that when calling a function of the software that performs the read or write LV, SV, data of the calling and / or the called procedure instance, that is, the parameter group, are detected. Furthermore, in the context of carrying out the method, only a part of the parameter group or else information that is obtained by evaluating one or more data of the parameter group can be generated. The data or information obtained during a reading or writing process is stored in a document for later processing. Furthermore, it is useful in practice to log the execution time of the acquisition of this information or data for each stored information or stored data. In general, these information, which can be assigned to a procedure change, are referred to as characteristic parameters CP1,..., CP4.
  • FIG. 3 shows a flow diagram for one exemplary embodiment.
  • a first document D1 for the first software S1 is generated with the aid of the first step X1.
  • at least one first characteristic parameter CP1 for the procedure change in the first document D1 is detected in the first step X1.
  • the first document may include the level F of the stack SP over the time of executing the first software. This has already been explained in more detail with reference to FIG.
  • the first document can display level F over time in the following way:
  • Level F 0 250 0 400 The first line of this table indicates the execution times AZ over the time T, for example in milliseconds ms.
  • the second line reflects the level of the stack in bytes.
  • the level contains between 0 and 40 ms 0 bytes, between 40 and 80 ms 250 bytes etc.
  • a second document D2 is generated for the second software S2.
  • the procedure is analogous to the first step Xl.
  • the representation of the second document D2 is analogous to the first document D1.
  • a third step X3 at least one section of the second document D2 is correlated by at least one characteristic parameter CP1 of at least one section of the second document D2
  • Document Dl formed a correlation value KW.
  • the correlation value KW indicates to what extent correlated sections of the first and second documents D1, D2 are similar.
  • An exemplary procedure of the third step for forming the correlation value KW is explained in more detail below with reference to FIG.
  • FIG. 4A shows the progression of the fill level of the stack during execution of the first software over time T. This history is stored in the first document.
  • FIG. 4B shows a further course of the stack when executing the second software S2. This history is stored in the second document.
  • a first section Al is selected in the course of the filling level F from FIG. 4A. This selected first section Al is shown in FIG. 4C. Within the course of the filling level, which results when executing the second software S2, see FIG.
  • this first section A1 is now searched for.
  • statistical methods are familiar to a person skilled in the art with the aid of which the course of the fill level of the first section Al can be correlated with the fill level profile of FIG. 4B.
  • a high correlation value results at the time T 1.
  • correlation values that are 0 or small result.
  • the correlation value KW exceeds a predefinable threshold value SW at the first time Tl.
  • a fourth step at least one correlation value KW generated in the third step X3 is compared with a predefinable threshold value SW. If the correlation value KW is greater than the threshold value SW, the flowchart in the path J is continued. In this path, in a fifth step X5, for example, a user is notified that a correlation value greater than the threshold has been found. This means that at least part of the first software could be found in the second software S2 and thus at least parts of the first software were copied from the second software, i. a pirated copy has thus been discovered. The fifth step is then ended in the END state.
  • a portion of the course of the fill level of the stack when exporting the first software was compared with the course of the level during the export of the second software.
  • a section to be compared can also be used from the full-level profile of the second software instead of from the full-level profile of the first software. This is shown by way of example with a second section A2 in FIG. 4B.
  • at least a similarity of a portion of the first and second documents in the second or first document is sought.
  • the fill level of the stack has been used over the execution time of the respective software.
  • characteristic parameters CP1,..., CP4 can be used, which characterize a procedure change.
  • a number of variables of the called procedure instance, a number of bytes of variables of the called procedure instance, a number of local variables of a calling procedure instance, a number of local caller instance local variables, or a number of bytes of the local variables of the calling procedure instance are considered as characteristic parameters.
  • an indication can be used which indicates whether the procedure change corresponds to a recursive call or the respective memory addresses of the called and / or the procedure instance to be called are used.
  • the correlation value describes a correlation of a plurality of characteristic parameters, which are correlated separately, for example, and linked to a correlation value by means of a weighted addition.
  • Those skilled in the art are further statistical methods for performing correlations with one or more Reren characteristic parameters known, so that will not be discussed further. If a plurality of correlation values ⁇ KWl, KW2, KW3 used, so a pirated copy is ⁇ is shown, if a plurality of correlation values respectively GRO SSER than an associated threshold value. Next Zah ⁇ lenbeispiel illustrates this:
  • a pirated copy is already detected if at least one of the correlation values is greater than the associated threshold value. For the 2 examples mentioned in the above paragraph, this means that a pirated copy is detected for each example.
  • a selection of the threshold (s) SW, Sl, ..., SW3 depends on the following aspects:
  • the respective threshold near the maxima ⁇ len correlation value is selected. It should be noted that small changes, eg due to changes in machine instructions in sections or for runtime fluctuations during the Ausbowens the first and second software, a low correlation value that is a cu ⁇ engined similarity yields and thus copied sections or the Pirated copy is not detected.
  • a low threshold SW is selected as the maximum correlation value, pirate copies can be detected even if changes occur in the runtime behavior of the sections of the first and second software. If the threshold is set too low, then cuts are recognized as copies that are not copies.
  • a concrete threshold value SW depends, for example, on the runtime behavior of a computer on which the first and second software are executed. If the computer uses a multitasking operating system, changes in the runtime behavior can occur, so that in this case a lower threshold value has to be set than with a real-time operating system.
  • Figure 5 shows an embodiment of the device in the form of a device G, which is designed for example as a portable device in a Mobilfunkgerat or as stationary operated device.
  • the device G has a first means M1, with which the first software S1 is executed.
  • characteristic parameters are recorded in a first document D1.
  • the second means M2 the second software S2 is executed.
  • characteristic parameters are recorded in a write and / or read operation of the parameter group of a procedure instance in a second document D2.
  • the second document can be read or written by means of the connection network X.
  • One or more correlation values KW1,..., KW3 are recorded in the third means M3 on the basis of the acquired information of the first and the second document.
  • correlation values are compared in the fourth means M4 with one or more predefinable threshold values SW1,..., SW4. Should one or more correlation values be greater than the respective threshold value, then with the aid of the fifth means M5 the presence of the copy, that is, at least portions of the first software with portions of the second software are almost or identical, are displayed.
  • This display can be reproduced, for example, for a user on a display DD.
  • the means Ml, ..., M5, the first and second document Dl, D2, the stack SP and the display DD are connected to each other via the connection network X for the exchange of information and data.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Debugging And Monitoring (AREA)
  • Storage Device Security (AREA)

Abstract

Die Erfindung betrifft ein Verfahren zum Nachweis einer Raubkopie, bei der eine erste Software eine Kopie von zumindest einem Teil einer zweiten Software umfasst werden folgende Schritten ausgeführt bei dem die erste Software ausgeführt wird, wobei bei einem während eines Prozedurwechsels stattfindenden Schreib- und/oder Lesevorgang einer Parametergruppe einer Prozedurinstanz auf einen und/oder von einem Stapelspeicher zumindest ein für diesen Schreib- und/oder Lesevorgang charakteristischer Parameter in einer für ein Auftreten der Schreib- und/oder Lesevorgänge zeitlichen Reihenfolge in einem ersten Dokument aufgenommen wird, die zweite Software ausgeführt wird, wobei bei einem während eines Prozedurwechsels stattfindenden Schreib- und/oder Lesevorgang einer Parametergruppe einer Prozedurinstanz auf einen bzw. von einem Stapelspeicher zumindest ein für diesen Schreib- und/oder Lesevorgang charakteristischer Parameter in einer für ein Auftreten der Schreib- und/oder Lesevorgänge zeitlichen Reihenfolge in einem zweiten Dokument aufgenommen wird, der zumindest eine Korrelationswerts durch Korrelation zumindest einer der charakteristischen Parameter zumindest eines Abschnitts des zweiten Dokuments mit zumindest einem der dazugehörigen charakteristischen Parameter zumindest eines Abschnitts des ersten Dokuments gebildet wird und ein Vorhandensein der Raubkopie angezeigt wird, falls der Korrelationswert größer als ein Schwellenwert ist. Ferner betrifft die Erfindung auch eine Vorrichtung zur Durchführung des Verfahrens.

Description

Beschreibung
Verfahren und Vorrichtung zum Nachweis einer Raubkopie
Die Erfindung betrifft ein Verfahren gemäß dem Anspruch 1 sowie eine Vorrichtung gemäß dem Anspruch 6.
Die Entwicklung von Software stellt bei der Herstellung von Produkten, wie zum Beispiel bei Mobiltelefonen oder bei Au- tos, einen erheblichen Kostenfaktor dar. Da Software aber leicht zu kopieren ist, beispielsweise durch Kopieren einer CD (CD - Compact Disc) , welche die zu kopierende Software um- fasst, entstehen für Software-Hersteller hohe Umsatzverluste. Neben dem Kopieren ganzer Software-Pakete, wie beispielsweise einer kompletten Betriebssystem-CD, können auch Teile derartiger Software, wie zum Beispiel einzelne Dynamic Link Libraries (DLL - Dynamic Link Library) in weiteren Software-Produkten als Raubkopie benutzt werden.
Der Erfindung liegt die Aufgabe zu Grunde, ein Verfahren und eine Vorrichtung anzugeben, mit der eine zumindest teilweise Kopie einer zweiten Software in einer ersten Software nachgewiesen wird, wobei das Verfahren und die Vorrichtung sowohl robust gegenüber Änderungen der Kopie als auch auf bestehende Software anwendbar ist.
Diese Aufgabe wird durch die unabhängigen Ansprüche gelost. Weiterbildungen der Erfindung finden sich in den abhangigen Ansprüchen .
Bei einem Verfahren zum Nachweis einer Raubkopie, bei der eine erste Software eine Kopie von zumindest einem Teil einer zweiten Software umfasst, werden folgende Schritte ausgeführt: a) Ausfuhren der ersten Software, wobei bei einem wahrend eines Prozedurwechsels stattfindenden Schreib- und/oder Lesevorgang einer Parametergruppe einer Prozedurinstanz auf einen und/oder von einem Stapelspeicher zumindest ein für diesen Schreib- und/oder Lesevorgang charakteristischer Parameter in einer für ein Auftreten der Schreib- und/oder Lesevorgange zeitlichen Reihenfolge in einem ersten Dokument aufgenommen wird; b) Ausfuhren der zweiten Software, wobei bei einem wahrend eines Prozedurwechsels stattfindenden Schreib- und/oder Lesevorgang einer Parametergruppe einer Prozedurinstanz auf einen und/oder, von einem Stapelspeicher zumindest ein für diesen Schreib- und/oder Lesevorgang charakteristi- scher Parameter in einer für ein Auftreten der Schreib- und/oder Lesevorgange zeitlichen Reihenfolge in einem zweiten Dokument aufgenommen wird; c) Bilden zumindest eines Korrelationswerts durch Korrelation zumindest einer der charakteristischen Parameter zumindest eines Abschnitts des zweiten Dokuments mit zumindest einem der dazugehörigen charakteristischen Parameter zumindest eines Abschnitts des ersten Dokuments; d) Anzeige eines Vorhandenseins der Raubkopie, falls der Korrelationswert großer als ein Schwellenwert ist.
Dieses Verfahren ermöglicht eine Raubkopie einer zweiten Software bzw. Teile einer zweiten Software in einer ersten Software durch Aufnahme von charakteristischen Parametern wahrend der jeweiligen Ausfuhrung nachzuweisen. Dabei wird zum einen durch Verwendung des Korrelationswert ermöglicht, dass trotz Änderungen in der ersten Software gegenüber der zweiten Software die Raubkopie dennoch erkannt wird, weil der Korrelationswert eine Ähnlichkeit zweier Abschnitte der ersten und der zweiten Software beschreibt. Zum anderen sind in der ersten bzw. zweiten Software keinerlei Änderungen erforderlich, da die Aufnahme bzw. Erfassung der charakteristischen Parameter mittels eines eigenständigen Programms, welches Funktionen des Betriebssystems auswertet, erfolgen kann. Somit kann auch bestehende Software auf Raubkopien untersucht werden.
Vorzugsweise werden als charakteristischer Parameter ein Wert der Parametergruppe und/oder ein Ausfuhrungszeitpunkt des Prozedurwechsels verwendet. Bei Benutzung eines der Werte der Parametergruppe können spezifische Verhalteneigenschaften von aufzurufender und/oder aufgerufener Prozedurinstanz genau analysiert werden. Bei Verwendung des Ausführungszeitpunkts kann ein Zeitdiagramm erstellt werden, welches angibt, zu welchen Zeitpunkten der Prozedurwechsel stattgefunden hat. Mit Hilfe dieser charakteristischen Parameter kann ein charakteristisches Verhalten der Prozedurinstanzen genau beschrieben werden. Insbesondere können folgende charakteristi- sehen Parameter der Parametergruppe benutzt werden:
- Anzahl an Variablen einer aufgerufenen Prozedurinstanz;
- Anzahl an Bytes der Variablen der aufgerufenen Prozedurinstanz;
- Anzahl an lokalen Variablen einer aufrufenden Prozedurin- stanz;
- Anzahl an Bytes der lokalen Variablen der aufrufenden Prozedurinstanz;
- Angabe, ob ein rekursiver Aufruf zwischen aufgerufener und aufzurufender Prozedurinstanz stattfindet; - Angabe einer jeweiligen Speicheradresse der aufgerufenen und/oder der aufzurufenden Prozedurinstanz.
Diese charakteristischen Parameter der Parametergruppe können in einfacher Weise bei dem Prozedurwechsel erfasst werden.
Vorzugsweise werden mehrere Abschnitte des zweiten Dokuments mit den dazugehörigen charakteristischen Parametern zumindest mit einem Abschnitt des ersten Dokuments korreliert und daraus für jeden korrelierten Abschnitt des zweiten Dokuments als Ergebnis ein dazugehöriger Korrelationswert gebildet und eine Kopie angezeigt, falls eine Mehrzahl der Korrelationswerte größer als ein jeweiliger Schwellenwert ist. Somit kann eine Reduzierung einer Rate von irrtümlicherweise erkannten Raubkopien erreicht werden, da mehr als ein Korrelationswert für die Bestimmung ob Raubkopie oder nicht Raubkopie in Be- tracht gezogen wird.
In einer alternativen Weiterbildung werden mehrere Abschnitte des zweiten Dokuments mit den dazugehörigen charakteristi- sehen Parametern mit zumindest einem Abschnitt des ersten Dokuments korreliert und daraus für jeden korrelierten Abschnitt des zweiten Dokuments als Ergebnis ein dazugehöriger Korrelationswert gebildet und eine Kopie angezeigt, falls zu- mindest einer der Korrelationswerte größer als ein erster
Schwellenwert und die weiteren Korrelationswerte jeweils größer als ein zweiter Schwellenwert sind. Diese Alternative ermöglicht auch eine Reduzierung irrtümlicherweise erkannter Raubkopien .
Die Erfindung betrifft auch eine Vorrichtung zum Nachweis einer Raubkopie, bei der eine erste Software eine Kopie von zumindest einem Teil einer zweiten Software umfasst, mit
- einem ersten Mittel zum Ausführen der ersten Software, wo- bei bei einem während eines Prozedurwechsels stattfindenden
Schreib- und/oder Lesevorgang einer Parametergruppe einer Prozedurinstanz auf einen und/oder von einem Stapelspeicher zumindest ein für diesen Schreib- und/oder Lesevorgang charakteristischer Parameter in einer für ein Auftreten der Schreib- und/oder Lesevorgänge zeitlichen Reihenfolge in einem ersten Dokument aufgenommen wird;
- einem zweiten Mittel zum Ausführen der zweiten Software, wobei bei einem während eines Prozedurwechsels stattfindenden Schreib- und/oder Lesevorgang einer Parametergruppe ei- ner Prozedurinstanz auf einen und/oder von einem Stapelspeicher zumindest ein für diesen Schreib- und/oder Lesevorgang charakteristischer Parameter in einer für ein Auftreten der Schreib- und/oder Lesevorgänge zeitlichen Reihenfolge in einem zweiten Dokument aufgenommen wird; - einem dritten Mittel zum Bilden zumindest eines Korrelationswerts durch Korrelation zumindest einer der charakteristischen Parameter zumindest eines Abschnitts des zweiten Dokuments mit zumindest einem der dazugehörigen charakteristischen Parameter zumindest eines Abschnitts des ersten Dokuments;
- einem vierten Mittel zum Vergleichen des zumindest einen Korrelationswert mit zumindest einem Schwellenwert; - einem fünften Mittel zum Anzeige eines Vorhandenseins der Raubkopie, falls der Korrelationswert größer als ein Schwellenwert ist.
Mit Hilfe dieser Vorrichtung ist das Verfahren implementier- und ausführbar. Das Verfahren bzw. die Vorrichtung können als Hardware, als Software ablaufend auf einem Prozessor oder als Kombination aus Hardware und Software realisiert sein.
Die Erfindung und ihre Weiterbildungen werden nachfolgend anhand der Zeichnung näher erläutert:
Es zeigen:
Figur 1 ein Programmablauf einer Software, bei dem mehrere Prozedureinheiten aufgerufen werden;
Figur 2 eine Belegung eines Stapelspeichers während eines
Programmablaufs ;
Figur 3 ein Ablaufdiagramm eines Ausführungsbeispiels;
Figur 4 A, B, C, D Ausschnitte eines Füllstands des Stapelspeichers für eine erste bzw. eine zweite Software, ein zu suchendes Muster innerhalb der jeweiligen
Füllstandsverläufe des Stapelspeichers und Verteilung des Korrelationswerts über der Zeit;
Figur 5 eine Vorrichtung zur Durchführung des Verfahrens zum Nachweis einer Raubkopie.
Elemente mit gleicher Funktion und Wirkungsweise sind in den Figuren 1 bis 5 mit denselben Bezugszeichen versehen.
In Figur 1 ist ein Programmablauf einer Software zu sehen.
Dabei liegt die Software in Form einer Abfolge von Maschinenbefehlen vor und wird beispielsweise auf einem Mikroprozessor oder einem digitalen Signalprozessor ausgeführt. Diese Soft- wäre mit den Maschinenbefehlen kann durch Kompilieren und Linken eines C-Programms mit Hilfe eines Entwicklungspakets, beispielsweise dem Microsoft Visual Studio, erstellt werden.
Die Software kann in mehrere Prozedurinstanzen PI unterteilt werden. Innerhalb jeder Prozedurinstanz PI werden Maschinenbefehle sequenziell ausgeführt. Dabei werden während oder am Ende der jeweiligen Prozedurinstanz andere Prozedurinstanzen aufgerufen, d.h. ein Prozedurwechsel findet statt. Diese Auf- rufe bewirken, dass Daten, wie beispielsweise Registerinhalte des Mikroprozessors von einem oder auf einen Stapelspeicher (Stack) gelesen bzw. geschrieben werden.
Der Prozedurwechsel mit den Lese- und Schreibvorgängen LV, SV werden anhand der Figur 1 näher erläutert. Dabei wird während des Ablaufs einer ersten Prozedurinstanz PIl eine zweite Prozedurinstanz PI2 aufgerufen. Hierbei werden die Registerinhalte des Mikroprozessors zum Zeitpunkt vor dem Prozedurwechsel auf den Stapelspeicher SP mittels des Schreibvorgangs SV geschrieben. Ferner können auch Werte lokaler Variablen der ersten Prozedurinstanz PIl auf dem Stapelspeicher abgelegt werden. Im Allgemeinen wird eine Parametergruppe PG der Prozedurinstanz PI, PIl auf den bzw. von dem Stapelspeicher SP geschrieben bzw. gelesen. In diesem Ausführungsbeispiel um- fasst die Parametergruppe PG die Registerinhalte und lokale Variablen der ersten Prozedurinstanz PIl. Ferner stellt die erste Prozedurinstanz PIl eine aufrufende Prozedurinstanz und die zweite Prozedurinstanz PI2 eine aufgerufene Prozedurinstanz dar.
Nach Aufruf der zweiten Prozedurinstanz PI2 werden die einzelnen Maschinenbefehle der zweiten Prozedurinstanz abgearbeitet. Bei Erreichen des Endes der zweiten Prozedurinstanz PI2 kehrt der Programmablauf zur ersten Prozedurinstanz PIl zurück. Dabei werden die zum Zeitpunkt des Prozedurwechsels von der ersten zur zweiten Prozedurinstanz abgelegten Daten von dem Stapelspeicher SP mittels des Lesevorgangs LV gelesen. Diese gelesenen Daten umfassen beispielsweise Register- inhalte, die in die entsprechenden Register des Mikroprozessors geschriebenen werden oder auch Inhalte lokaler Daten, die den lokalen Variablen der einen Prozedurinstanz PIl zugeordnet werden.
Nachdem innerhalb der ersten Prozedurinstanz PIl weitere Maschinenbefehle ausgeführt worden sind, soll im Folgenden zu einer dritten Prozedurinstanz PI3 gesprungen werden. Dabei findet bei dem Wechsel von der ersten zur dritten Prozedurin- stanz ein Schreibvorgang SV gemäß der obigen Beschreibung statt. Innerhalb der dritten Prozedurinstanz wird eine vierte Prozedurinstanz PI4 aufgerufen, wobei wiederum ein Schreibvorgang SV ausgeführt wird. Bei Beendigung des Programmablaufs der vierten Prozedurinstanz PI4 wird zur dritten Proze- durinstanz PI3 zurückgesprungen, wobei ein Lesevorgang durchgeführt wird. Diese dritte Prozedurinstanz PI3 wird fortgesetzt bis zu ihrem Ende und dann mit Hilfe eines weiteren Lesevorgangs die erste Prozedurinstanz PIl aufgerufen. Während der jeweiligen Prozedurwechsel werden die zu den jeweiligen Prozedurinstanzen gehörenden Daten auf den Stapelspeicher SP geschrieben bzw. von dem Stapelspeicher SP gelesen. Diese Lese- und Schreibvorgänge LV, SV sind in Figur 1 symbolisch mit Pfeilen wiedergegeben, wobei mit Hilfe dieser Pfeile die während des Programmablaufs der Software durchgeführten Sprünge zwischen den Prozedurinstanzen PI wiedergegeben sind. Die
Verwendung von Stapelspeichern sind einem Fachmann bekannt, siehe beispielsweise [I].
Mit Hilfe von Figur 2 wird im Folgenden ein Füllstand des Stapelspeichers während des Ablaufs einer Software mit den einzelnen Prozedurinstanzen über einer Zeitachse T näher erläutert. Die einzelnen Prozedurinstanzen PIl,..., PI4 wurden in dem Ausführungsbeispiel gemäß Figur 1 in der folgenden Reihenfolge aufgerufen:
PIl -> PI2 -> PIl -> PI3 -> PI4 -> PI3 -> PIl. Diese Abfolge der einzelnen Prozedurinstanzen ist im unteren Bildteil von Figur 2 abgedruckt. Im oberen Bildteil der Figur 2 ist ein Füllstandsdiagramm mit dem Füllstand F des Stapelspeichers SP in Abhängigkeit des Ablaufs der Software, d.h. in Abhängigkeit von den ausgeführten Prozedurinstanzen, wiedergegeben. Der Füllstand F wird beispielsweise in Bytes angegeben, wobei jeder Teilstrich des Füllstands F in Figur 2 jeweils 100 Bytes entspricht. Somit werden beispielsweise beim Aufruf der zweiten Prozedurinstanz PI2 durch den Schreibvorgang SV 250 Bytes in den Stapelspeicher geschrieben. Bei Beendigung der zweiten Prozedurinstanz PI2 werden bei dem folgenden Lesevorgang LV die 250 Bytes von dem Stapelspeicher gelesen. Bei den nachfolgenden Prozedurwechseln wird in analoger Weise verfahren. In dem Füllstanddiagramm des Stapelspeichers ist zu erkennen, dass bei einem Schreibvorgang der Füllstand des Stapelspeichers zunimmt, wohingegen bei einem Lesevorgang der Füllstand reduziert wird.
Das erfindungsgemäße Verfahren erfasst zu denjenigen Ausfüh- rungszeitpunkten AZ, an denen ein Prozedurwechsel stattfindet, charakteristische Parameter CPl,..., CP4. Diese charakteristischen Parameter repräsentieren spezifische Eigenschaften der aufrufenden und/oder der aufgerufenen Prozedurinstanz. Die charakteristischen Parameter können beispielsweise einem oder mehreren Werten der Parametergruppe PG entsprechen, wie zum Beispiel einem spezifischen Registerinhalt. Ferner kann ein charakteristischer Parameter auch aus einer Zusammenfassung bzw. Auswertung der zum Prozedurwechsel er- fassten Parametergruppe PG generiert werden. Hierbei kann ein erster charakteristischer Parameter CPl einer Anzahl an Bytes aller lokalen Variablen der aufrufenden Prozedurinstanz PIl entsprechen. Im Ausführungsbeispiel gemäß Figur 1 wurden bei dem Prozedurwechsel von PIl nach PI2 250 Bytes auf den Stapelspeicher geschrieben. Diese 250 Bytes umfassen beispiels- weise 64 Bytes, welche die Registerwerte umfassen, und 186
Bytes, die Werte der lokalen Variablen der ersten Prozedurinstanz PIl beinhalten. Somit beschreibt der erste charakteristische Parameter CPl die Anzahl an Bytes der lokalen Variab- len der ersten Prozedurinstanz PIl, das heißt der aufrufenden Prozedurinstanz, welche im vorliegenden Ausführungsbeispiel CPl = 186 beträgt.
Eine Erfassung der Parametergruppe PG wird beispielsweise dadurch realisiert, dass bei Aufruf einer Funktion der Software, die den Lese- bzw. Schreibvorgang LV, SV durchführt, Daten der aufrufenden und/oder der aufgerufenen Prozedurinstanz, das heißt die Parametergruppe, erfasst werden. Ferner kann im Rahmen der Durchführung des Verfahrens nur ein Teil der Parametergruppe oder auch eine Information, die durch Auswertung einer oder mehrerer Daten der Parametergruppe gewonnen wird, erzeugt werden. Die bei einem Lese- bzw. Schreibvorgang gewonnenen Daten bzw. Informationen werden in einem Dokument zur späteren Weiterbearbeitung organisiert abgelegt. Ferner ist es in der Praxis zweckmäßig, zu jeder gespeicherten Information bzw. gespeicherten Daten den Ausführungszeitpunkt der Erfassung dieser Information bzw. Daten mit zu protokollieren. Im Allgemeinen werden diese Informati- onen, die zu einem Prozedurwechsel zuordenbar sind, als charakteristische Parameter CPl,..., CP4 bezeichnet.
In Figur 3 ist ein Ablaufdiagramm für ein Ausführungsbeispiel dargestellt. Nach dem Start des Ablaufdiagramms im Zustand STA wird mit Hilfe des ersten Schritts Xl ein erstes Dokument Dl für die erste Software Sl erzeugt. In dem ersten Schritt Xl wird während des Ausführens der ersten Software Sl bei Schreib- und/oder Lesevorgängen zumindest ein erster charakteristischer Parameter CPl für den Prozedurwechsel in dem ersten Dokument Dl erfasst. Dabei kann das erste Dokument beispielsweise den Füllstand F des Stapelspeichers SP über der Zeit des Ausführens der ersten Software umfassen. Dies ist bereits anhand von Figur 2 näher erläutert worden. Das erste Dokument kann den Füllstand F über der Zeit in folgen- der Form wiedergeben:
Zeit T 0 40 80 100
Füllstand F 0 250 0 400 Die erste Zeile dieser Tabelle gibt die Ausführungszeitpunkte AZ über der Zeit T beispielsweise in Millisekunden ms an. Die zweite Zeile spiegelt den Füllstand des Stapelspeichers in Bytes wieder. Dabei beinhaltet der Füllstand zwischen 0 und 40 ms 0 Bytes, zwischen 40 und 80 ms 250 Bytes usw.
In einem zweiten Schritt X2 wird für die zweite Software S2 ein zweites Dokument D2 erzeugt. Die Vorgehensweise ist dabei analog zum ersten Schritt Xl. Auch die Darstellung des zweiten Dokuments D2 ist analog zum ersten Dokument Dl. In einem dritten Schritt X3 wird durch Korrelation des zumindest einem charakteristischen Parameter CPl zumindest eines Abschnitts des zweiten Dokuments D2 mit zumindest einem der charakteris- tischen Parameter CPl zumindest eines Abschnitts des ersten
Dokuments Dl ein Korrelationswert KW gebildet. Der Korrelationswert KW gibt an, inwieweit korrelierte Abschnitte des ersten und des zweiten Dokuments Dl, D2 ähnlich sind. Eine exemplarische Vorgehensweise des dritten Schritts zur Bildung des Korrelationswertes KW wird nachfolgend anhand von Figur 4 näher ausgeführt. Figur 4A zeigt den Verlauf des Füllstands des Stapelspeichers beim Ausführen der ersten Software über der Zeit T. Dieser Verlauf ist im ersten Dokument gespeichert. Figur 4B zeigt einen weiteren Verlauf des Stapelspeichers beim Ausführen der zweiten Software S2. Dieser Verlauf ist im zweiten Dokument gespeichert. Zur Bildung des Korrelationswerts KW wird ein erster Abschnitt Al im Verlauf des Füllstands F aus Figur 4A ausgewählt. Dieser ausgewählte erste Abschnitt Al ist in Figur 4C wiedergegeben. Innerhalb des Verlaufs des Füllstands, der sich beim Ausführen der zweiten Software S2 ergibt, siehe Figur 4B, wird nun dieser erste Abschnitt Al gesucht. Hierzu sind statistische Methoden einem Fachmann geläufig, mit Hilfe derer der Verlauf des Füllstands des ersten Abschnitts Al mit dem Füllstandsverlauf aus Figur 4B korreliert werden kann. Hierbei ergibt sich, wie in Figur 4D gezeigt, zum Zeitpunkt Tl ein hoher Korrelationswert. Zu den Zeitpunkten, die nicht dem ersten Zeitpunkt Tl entsprechen, ergeben sich Korrelationswerte, die 0 oder klein sind. Wie in Figur 4D zu sehen, überschreitet zum ersten Zeitpunkt Tl der Korrelationswert KW einen vorgebbaren Schwellenwert SW. Beispielsweise betragt der Schwellenwert SW = 0,5 und der Korrelationswert KW = 0,75. Somit ist in dem Fullstandsver- lauf, der beim Ausfuhren der zweiten Software S2 entsteht, ein ahnliches Verhalten der zweiten Software wie beim Ausfuhren der ersten Software entdeckt worden.
Wie in Figur 3 in einem vierten Schritt angegeben, wird zu- mindest der eine in dem dritten Schritt X3 erzeugte Korrelationswert KW mit einem vorgebbaren Schwellenwert SW verglichen. Ist der Korrelationswert KW großer als der Schwellenwert SW, so wird das Ablaufdiagramm im Pfad J fortgesetzt. In diesem Pfad wird in einem fünften Schritt X5 beispielsweise einem Benutzer angezeigt, dass ein Korrelationswert gefunden wurde, der großer als der Schwellenwert ist. Dies bedeutet, dass zumindest ein Teil der ersten Software in der zweiten Software S2 gefunden werden konnte und somit zumindest Teile der ersten Software aus der zweiten Software kopiert worden sind, d.h. eine Raubkopie ist somit entdeckt worden. Der fünfte Schritt wird anschließend im Zustand END beendet.
Findet sich jedoch im vierten Schritt X4 kein Korrelationswert KW, der großer als der vorgebbare Schwellenwert SW ist, so wird das Ablaufdiagramm im Pfad N fortgesetzt, welcher das Ablaufdiagramm im Zustand END terminiert.
Im vorliegenden Ausfuhrungsbeispiel wurde ein Abschnitt des Verlaufs des Füllstands des Stapelspeichers beim Ausfuhren der ersten Software mit dem Verlauf des Füllstands beim Ausfuhren der zweiten Software verglichen. Im Allgemeinen kann ein zu vergleichender Abschnitt an Stelle aus dem Fullstands- verlauf der ersten Software auch aus dem Fullstandsverlauf der zweiten Software benutzt werden. Dies ist exemplarisch mit einem zweiten Abschnitt A2 in Figur 4B wiedergegeben. Im Allgemeinen wird zumindest eine Ähnlichkeit eines Abschnitts des ersten bzw. zweiten Dokuments in dem zweiten bzw. ersten Dokument gesucht. Des Weiteren ist es in der Praxis zweckmäßig, mehrere Abschnitte in dem zweiten Dokument D2 festzulegen, für die eine Korrelation mit Abschnitten des ersten Dokuments Dl durchge- führt werden soll. Erst wenn für mehrere Abschnitte des zweiten Dokuments ein Korrelationswert gefunden wird, der größer als ein jeweils vorgebbarer Schwellenwert SW ist, wird im Schritt X5 dem Benutzer angezeigt, dass es sich bei der ersten Software um eine Raubkopie der zweiten Software handelt.
Im Ausführungsbeispiel gemäß Figur 4 wurde der Füllstand des Stapelspeichers über der Ausführungszeit der jeweiligen Software verwendet. Im Allgemeinen können verschiedenste charakteristische Parameter CPl,..., CP4 herangezogen werden, die einen Prozedurwechsel charakterisieren. Neben dem Füllstand des Stapelspeichers können eine Anzahl an Variablen der aufgerufenen Prozedurinstanz, eine Anzahl an Bytes der Variablen der aufgerufenen Prozedurinstanz, einen Anzahl an lokalen Variablen einer aufrufenden Prozedurinstanz, eine Anzahl an lo- kalen Variablen einer aufrufenden Prozedurinstanz oder auch eine Anzahl an Bytes der lokalen Variablen der aufrufenden Prozedurinstanz als charakteristische Parameter in Betracht gezogen werden. Ferner können alternativ oder zusätzlich als charakteristische Parameter eine Angabe verwendet werden, die anzeigt, ob der Prozedurwechsel einem rekursiven Aufruf entspricht oder die jeweiligen Speicheradressen der aufgerufenen und/oder der aufzurufenden Prozedurinstanz benutzt werden.
Ferner können auch Kombinationen von charakteristischen Para- metern bei der Bildung des Korrelationswerts berücksichtigt werden. Beispielsweise werden neben dem reinen Füllstand des Stapelspeichers auch eine Anzahl an Variablen der aufgerufenen Prozedurinstanz berücksichtigt. Somit beschreibt der Korrelationswert eine Korrelation mehrerer charakteristischer Parameter, die beispielsweise jeweils separat korreliert und mittels einer gewichteten Addition zu einem Korrelationswert verknüpft werden. Dem Fachmann sind weitere statistische Methoden zur Durchführung von Korrelationen mit einem oder meh- reren charakteristischen Parametern bekannt, so dass hierauf nicht weiter eingegangen wird. Werden mehrere Korrelations¬ werte KWl, KW2, KW3 verwendet, so wird eine Raubkopie ange¬ zeigt, falls eine Mehrzahl an Korrelationswerten jeweils gro- ßer als ein dazugehöriger Schwellenwert ist. Folgendes Zah¬ lenbeispiel verdeutlicht dies:
KWl = 05,; KW2 = 0,3; KW3 = 0,25 SWl = 0,4; SW2 = 0,4; SW3 = 0,4
Hierbei ist nur der zweite Korrelationswert KW2 > SW2, so dass keine Raubkopie detektiert wird. Ist SW3 = 0,2, so sind KW2 > SW2 und KW3 > SW3. So wird eine Raubkopie erkannt.
In einer alternativen Ausfuhrungsform wird eine Raubkopie bereits erkannt, falls zumindest einer der Korrelationswerte großer als der dazugehörige Schwellenwert ist. Für die im o- bigen Absatz genannten 2 Beispiele bedeutet dies, dass für jedes Beispiel eine Raubkopie detektiert wird.
Eine Auswahl des bzw. der Schwellenwerte SW, Sl, ..., SW3 hangt von folgenden Aspekten ab:
a) Soll eine Übereinstimmung zwischen zu vergleichenden Ab- schnitten der ersten und der zweiten Software sehr genau sein, so wird der jeweilige Schwellenwert nahe dem maxima¬ len Korrelationswert gewählt. Hierbei ist zu beachten, dass kleine Änderungen, z.B. aufgrund von Änderungen der Maschinenbefehle in den Abschnitten oder wegen Laufzeit- Schwankungen wahrend des Ausfuhrens der ersten und zweiten Software, einen niedrigen Korrelationswert d.h. eine nied¬ rige Ähnlichkeit, ergibt und somit kopierte Abschnitte bzw. die Raubkopie nicht erkannt wird. b) Wird ein niedriger Schwellenwert SW als der maximale Kor- relationswert ausgewählt, so können Raubkopien auch dann nachgewiesen werden, wenn Änderungen im Laufzeitverhalten der Abschnitte der ersten und zweiten Software auftreten. Wird der Schwellenwert zu niedrig gewählt, so werden Ab- schnitte als Kopien erkannt, die in Wirklichkeit keine Kopien sind.
Nimmt der Korrelationswert KW bspw. einen Wertebereich von -1 bis 1 ein, wobei der Wert 1 exakte Übereinstimmung und der Wert -1 vollständige Nicht-Ubereinstimmung darstellt, so ergibt bspw. ein Wert von KW = 0,8 eine niedrige Rate bei einer Angabe einer irrtümlicherweise erkannten Raubkopie und gleichzeitig erlaubt dieser Wert eine Toleranz gegen kleine Änderungen im Maschinencode und gegen Änderungen im Laufzeitverhalten. Ein konkreter Schwellenwert SW hangt bspw. von dem Laufzeitverhalten eines Rechners ab, auf dem die erste und zweite Software ausgeführt wird. Verwendet der Rechner ein Multitasking-Betriebssystem, so können Änderungen im Lauf- zeitverhalten auftreten, so dass in diesem Fall ein niedrigerer Schwellenwert einzustellen ist, als bei einem Realtime Betriebssystem.
Figur 5 zeigt eine Ausfuhrungsform der Vorrichtung in Form eines Geräts G, welches beispielsweise als tragbares Gerat in einem Mobilfunkgerat oder als stationär betriebenes Gerat ausgeführt ist. Das Gerat G verfugt über ein erstes Mittel Ml, mit dem die erste Software Sl ausgeführt wird. Dabei werden wahrend des Prozedurwechsels bei Schreib- und/oder Lese- vorgangen charakteristische Parameter in einem ersten Dokument Dl aufgenommen. In dem zweiten Mittel M2 wird die zweite Software S2 ausgeführt. Wahrend des Ausfuhrens werden charakteristische Parameter bei einem Schreib- und/oder Lesevorgang der Parametergruppe einer Prozedurinstanz in einem zweiten Dokument D2 erfasst. Das zweite Dokument kann mittels des Verbindungsnetzwerks X gelesen oder beschrieben werden. In dem dritten Mittel M3 werden auf Basis der erfassten Informationen des ersten und des zweiten Dokuments ein oder mehrere Korrelationswerte KWl,..., KW3 erfasst. Diese ermittelten Korrelationswerte werden in dem vierten Mittel M4 mit einem oder mehreren vorgebbaren Schwellenwerten SWl,..., SW4 verglichen. Sollten ein oder mehrere Korrelationswerte großer als der jeweilige Schwellenwert sein, so kann mit Hilfe des fünften Mittels M5 das Vorhandensein der Kopie, das heißt, das zumindest Abschnitte der ersten Software mit Abschnitten der zweiten Software nahezu oder ganz identisch sind, angezeigt werden. Diese Anzeige kann beispielsweise für einen Be- nutzer auf einem Display DD wiedergegeben werden. Die Mittel Ml,..., M5, das erste und zweite Dokument Dl, D2, der Stapelspeicher SP und das Display DD sind über das Verbindungsnetzwerk X zum Austausch von Informationen und Daten miteinander verbunden .
Literatur
[1] Stapelspeicher, Wikipedia-Enzyklopadie, siehe http: // de.wikipedia.org/wiki/stack

Claims

Patentansprüche
1. Verfahren zum Nachweis einer Raubkopie, bei der eine erste Software (Sl) eine Kopie von zumindest einem Teil einer zwei- ten Software (S2) umfasst, mit folgenden Schritten: a) Ausführen der ersten Software (Sl), wobei bei einem während eines Prozedurwechsels stattfindenden Schreib- und/oder Lesevorgang einer Parametergruppe (PG) einer Prozedurinstanz (PI) auf einen und/oder von einem Stapelspei- eher (SP) zumindest ein für diesen Schreib- und/oder Lesevorgang charakteristischer Parameter (CPl, ..., CP4) in einer für ein Auftreten der Schreib- und/oder Lesevorgänge zeitlichen Reihenfolge in einem ersten Dokument (Dl) aufgenommen wird; b) Ausführen der zweiten Software (S2), wobei bei einem während eines Prozedurwechsels stattfindenden Schreib- und/oder Lesevorgang einer Parametergruppe (PG) einer Prozedurinstanz (PI) auf einen und/oder von einem Stapelspeicher (SP) zumindest ein für diesen Schreib- und/oder Lese- Vorgang charakteristischer Parameter (CPl, ..., CP4) in einer für ein Auftreten der Schreib- und/oder Lesevorgänge zeitlichen Reihenfolge in einem zweiten Dokument (D2) aufgenommen wird; c) Bilden zumindest eines Korrelationswerts (KW) durch Korre- lation zumindest einer der charakteristischen Parameter (CPl) zumindest eines Abschnitts des zweiten Dokuments (D2) mit zumindest einem der dazugehörigen charakteristischen Parameter (CPl) zumindest eines Abschnitts des ersten Dokuments (D2); d) Anzeige eines Vorhandenseins der Raubkopie, falls der Korrelationswert (KW) größer als ein Schwellenwert (SW) ist.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass als charakteristischer Parameter (CPl, ..., CP4) ein Wert der Parametergruppe (PG) oder ein Ausführungszeitpunkt (AZ) des Prozedurwechsels verwendet wird.
3. Verfahren nach Anspruch 2, dadurch gekennzeichnet, dass zumindest einer der folgenden Parameter von der Parametergruppe (PG) umfasst wird: - Anzahl an Variablen einer aufgerufenen Prozedurinstanz
(PID ;
- Anzahl an Bytes der Variablen der aufgerufenen Prozedurinstanz (PIl) ;
- Anzahl an lokalen Variablen einer aufrufenden Prozedurin- stanz (PI2) ;
- Anzahl an Bytes der lokalen Variablen der aufrufenden Prozedurinstanz (PI2);
- Angabe, ob ein rekursiver Aufruf zwischen aufgerufener und aufzurufender Prozedurinstanz (PIl, PI2) stattfindet; - Angabe einer jeweiligen Speicheradresse der aufgerufenen und/oder der aufzurufenden Prozedurinstanz (PIl, PI2) .
4. Verfahren nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, dass mehrere Abschnitte des zweiten Dokuments (D2) mit den dazugehörigen charakteristischen Parametern (CPl) zumindest mit einem Abschnitt des ersten Dokuments (Dl) korreliert und daraus für jeden korrelierten Abschnitt des zweiten Dokuments (D2) als Ergebnis ein dazugehöriger Korrelationswert (KWl, KW2, KW3) gebildet wird, eine Kopie angezeigt wird, falls eine Mehrzahl der Korrelationswerte (KWl, KW2, KW3) größer als ein jeweiliger Schwellenwert (SWl, SW2, SW3) ist.
5. Verfahren nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, dass mehrere Abschnitte des zweiten Dokuments (D2) mit den dazugehörigen charakteristischen Parametern (CPl) mit zumindest einem Abschnitt des ersten Dokuments (D2) korreliert und daraus für jeden korrelierten Abschnitt des zweiten Dokuments (D2) als Ergebnis ein dazugehöriger Korrelationswert (KWl, KW2, KW3) gebildet wird, eine Kopie angezeigt wird, falls zumindest einer der Korrelationswerte (KWl) größer als ein erster Schwellenwert (SWl) und die weiteren Korrelationswerte (KW2, KW3) jeweils größer als ein zweiter Schwellenwert (SW2) sind.
6. Vorrichtung zum Nachweis einer Raubkopie, bei der eine erste Software (Sl) eine Kopie von zumindest einem Teil einer zweiten Software (S2) umfasst, insbesondere zur Durchführen eines Verfahrens gemäß einem der vorhergehenden Ansprüche, mit
- einem ersten Mittel (Ml) zum Ausführen der ersten Software (Sl), wobei bei einem während eines Prozedurwechsels stattfindenden Schreib- und/oder Lesevorgang einer Parametergruppe (PG) einer Prozedurinstanz (PI) auf einen und/oder von einem Stapelspeicher (SP) zumindest ein für diesen
Schreib- und/oder Lesevorgang charakteristischer Parameter (CPl, ..., CP4) in einer für ein Auftreten der Schreib- und/oder Lesevorgänge zeitlichen Reihenfolge in einem ersten Dokument (Dl) aufnehmbar ist; - einem zweiten Mittel (M2) zum Ausführen der zweiten Software (S2), wobei bei einem während eines Prozedurwechsels stattfindenden Schreib- und/oder Lesevorgang einer Parametergruppe (PG) einer Prozedurinstanz (PI) auf einen bzw. von einem Stapelspeicher (SP) zumindest ein für diesen Schreib- und/oder Lesevorgang charakteristischer Parameter (CPl, ..., CP4) in einer für ein Auftreten der Schreib- und/oder Lesevorgänge zeitlichen Reihenfolge in einem zweiten Dokument (D2) aufnehmbar ist;
- einem dritten Mittel (M3) zum Bilden zumindest eines Korre- lationswerts (KW) durch Korrelation zumindest einer der charakteristischen Parameter (CPl) zumindest eines Abschnitts des zweiten Dokuments (D2) mit zumindest einem der dazugehörigen charakteristischen Parameter (CPl) zumindest eines Abschnitts des ersten Dokuments (D2); - einem vierten Mittel (M4) zum Vergleichen des zumindest einen Korrelationswert (KW) mit zumindest einem Schwellenwert (SW) ; einem fünften Mittel (M5) zum Anzeige eines Vorhandenseins der Raubkopie, falls der Korrelationswert (KW) größer als ein Schwellenwert (SW) ist.
EP06793013A 2006-01-30 2006-08-25 Verfahren und vorrichtung zum nachweis einer raubkopie Ceased EP1979848A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE102006004240A DE102006004240A1 (de) 2006-01-30 2006-01-30 Verfahren und Vorrichtung zum Nachweis einer Raubkopie
PCT/EP2006/065680 WO2007085308A1 (de) 2006-01-30 2006-08-25 Verfahren und vorrichtung zum nachweis einer raubkopie

Publications (1)

Publication Number Publication Date
EP1979848A1 true EP1979848A1 (de) 2008-10-15

Family

ID=37671191

Family Applications (1)

Application Number Title Priority Date Filing Date
EP06793013A Ceased EP1979848A1 (de) 2006-01-30 2006-08-25 Verfahren und vorrichtung zum nachweis einer raubkopie

Country Status (4)

Country Link
EP (1) EP1979848A1 (de)
CN (1) CN101517585B (de)
DE (1) DE102006004240A1 (de)
WO (1) WO2007085308A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104424402B (zh) * 2013-08-28 2019-03-29 卓易畅想(北京)科技有限公司 一种用于检测盗版应用程序的方法及装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6971019B1 (en) * 2000-03-14 2005-11-29 Symantec Corporation Histogram-based virus detection
US6973577B1 (en) * 2000-05-26 2005-12-06 Mcafee, Inc. System and method for dynamically detecting computer viruses through associative behavioral analysis of runtime state
CN100388243C (zh) * 2001-04-05 2008-05-14 玉帝·空来富有限公司 防止不正当复制应用程序执行的方法
US7346780B2 (en) * 2002-04-03 2008-03-18 Microsoft Corporation Integrity ordainment and ascertainment of computer-executable instructions
US7287159B2 (en) * 2004-04-01 2007-10-23 Shieldip, Inc. Detection and identification methods for software

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"Immer unterwegs", INTERNET CITATION, 1 April 2005 (2005-04-01), XP007912770, Retrieved from the Internet <URL:http://www.linux-magazin.de/Heft-Abo/Ausgaben/2005/04/Auf-der-Pirsch/ (offset)/4> [retrieved on 20100421] *

Also Published As

Publication number Publication date
WO2007085308A1 (de) 2007-08-02
CN101517585A (zh) 2009-08-26
DE102006004240A1 (de) 2007-08-09
CN101517585B (zh) 2012-10-10

Similar Documents

Publication Publication Date Title
DE69918334T2 (de) Erzeugung von kompilierten programmen für interpretative laufzeitumgebungen
DE3750515T2 (de) Verfahren zur Zugriffssteuerung einer Datenbasis.
DE69831708T2 (de) Effiziente Erkennung von Computerviren und andere Dateneigenschaften
DE10050684B4 (de) Verfahren und System zur periodischen Ablaufverfolgung für Aufrufsequenzen zwischen Routinen
DE69909945T2 (de) Verfahren und Anordnung zur Korrelation von Profildaten dynamisch erzeugt durch ein optimiertes ausführbares Programm mit Quellcodeanweisungen
DE3121599A1 (de) Verfahren und schaltungsanordnung zum verdecken von fehlern in einem digitalen videosignal
DE19959758A1 (de) Bestimmung der Art und der Genauigkeit von lokalen Variablen bei vorhandenen Subroutinen
DE69126057T2 (de) Ein Informationsverarbeitungsgerät mit einer Fehlerprüf- und Korrekturschaltung
DE69930143T2 (de) Extrahieren von zusatzdaten in einem informationssignal
DE10234736A1 (de) System und Verfahren zum Synchronisieren von Mediendaten
DE69905776T2 (de) Sprachenverarbeitungsverfahren mit geringem Aufwand und Speicherbedarf bei der Profildatensammlung
DE10240883A1 (de) Verfahren zum Erfassen eines unbegrenzten Wachstums verketteter Listen in einer laufenden Anwendung
DE102006029138A1 (de) Verfahren und Computerprogrammprodukt zur Detektion von Speicherlecks
DE3850444T2 (de) Progammverwaltungsverfahren für verteilte Verarbeitungssysteme und angepasste Vorrichtung.
EP1067460A1 (de) Datenträger mit wiederherstellbarem Basisdatengrundzustand und Verfahren zu dessen Herstellung
DE102018214541A1 (de) Verfahren und vorrichtung zum abbilden von single-static-assignment-anweisungen auf einen datenflussgraphen in einer datenflussarchitektur
EP1979848A1 (de) Verfahren und vorrichtung zum nachweis einer raubkopie
DE102021204550A1 (de) Verfahren zum Erzeugen wenigstens eines Datensatzes zum Trainieren eines Algorithmus maschinellen Lernens
DE1965507A1 (de) Verfahren zum Wiederauffinden gespeicherter Informationen
DE102012210482A1 (de) Verfahren und System zum Migrieren von Geschäftsprozessinstanzen
WO2003094093A2 (de) Vergleich von verarbeitungsprotokollen
EP1904909A1 (de) Verfahren zum export von nutzungsrechten an elektronischen datenobjekten
EP1505399B1 (de) Verfahren zum Erzeugen von Testdaten zum Austesten der Funktionsfähigkeit einer datenverarbeitenden Schaltung
DE10325843A1 (de) Verfahren, Computer und Computerprogramm zum Verwalten von Resourcen zur Verwendung in einem resourcenbasierten Dokumentendatenstrom
EP0708941B1 (de) Verfahren zum test eines objektorientierten programms

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 20080707

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): DE FR GB IT SE

17Q First examination report despatched

Effective date: 20081107

DAX Request for extension of the european patent (deleted)
RBV Designated contracting states (corrected)

Designated state(s): DE FR GB IT SE

APBK Appeal reference recorded

Free format text: ORIGINAL CODE: EPIDOSNREFNE

APBN Date of receipt of notice of appeal recorded

Free format text: ORIGINAL CODE: EPIDOSNNOA2E

APBR Date of receipt of statement of grounds of appeal recorded

Free format text: ORIGINAL CODE: EPIDOSNNOA3E

APAF Appeal reference modified

Free format text: ORIGINAL CODE: EPIDOSCREFNE

RAP1 Party data changed (applicant data changed or rights of an application transferred)

Owner name: UNIFY GMBH & CO. KG

REG Reference to a national code

Ref country code: DE

Ref legal event code: R003

APBT Appeal procedure closed

Free format text: ORIGINAL CODE: EPIDOSNNOA9E

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION HAS BEEN REFUSED

18R Application refused

Effective date: 20150316