DE102006004240A1 - Method and device for detecting pirated copy - Google Patents

Method and device for detecting pirated copy Download PDF

Info

Publication number
DE102006004240A1
DE102006004240A1 DE102006004240A DE102006004240A DE102006004240A1 DE 102006004240 A1 DE102006004240 A1 DE 102006004240A1 DE 102006004240 A DE102006004240 A DE 102006004240A DE 102006004240 A DE102006004240 A DE 102006004240A DE 102006004240 A1 DE102006004240 A1 DE 102006004240A1
Authority
DE
Germany
Prior art keywords
document
software
procedure
writing
reading
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.)
Withdrawn
Application number
DE102006004240A
Other languages
German (de)
Inventor
Bernhard Agthe
Gero BÄSE
Ivan Dr. Kopilovic
Norbert Oertel
Marcel Dr. Wagner
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 AG
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 AG filed Critical Siemens AG
Priority to DE102006004240A priority Critical patent/DE102006004240A1/en
Priority to PCT/EP2006/065680 priority patent/WO2007085308A1/en
Priority to CN200680052033.4A priority patent/CN101517585B/en
Priority to EP06793013A priority patent/EP1979848A1/en
Publication of DE102006004240A1 publication Critical patent/DE102006004240A1/en
Withdrawn 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (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)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (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 Schritte 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 charakteristischen 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 stattfindenen 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 Korrelationswert 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 ...The invention relates to a method for detecting a pirated copy, in which a first software comprises a copy of at least part of a second software, the following steps are carried out in which the first software is executed, with a write and / or change taking place during a procedure change. or reading process 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 process is recorded in a first document in a chronological order for the occurrence of the writing and / or reading processes, the second software is carried out, with a write and / or read process of a parameter group of a procedure instance to or from a stack memory taking place during a procedure change at least one parameter characteristic of this write and / or read process in a for an occurrence of the write and / or Read processes timed chen sequence is recorded in a second document, the at least one correlation value is formed by correlating at least one of the characteristic parameters of at least one section of the second document with at least one of the associated characteristic parameters of at least one section of the first document and the presence of the pirated copy is indicated if the correlation value is greater than a threshold value. The invention also relates to a ...

Description

Die Erfindung betrifft ein Verfahren gemäß dem Anspruch 1 sowie eine Vorrichtung gemäß dem Anspruch 6.The The invention relates to a method according to claim 1 and a Device according to the claim 6th

Die Entwicklung von Software stellt bei der Herstellung von Produkten, wie zum Beispiel bei Mobiltelefonen oder bei Autos, einen erheblichen Kostenfaktor dar. Da Software aber leicht zu kopieren ist, beispielsweise durch Kopieren einer CD (CD – Compact Disc), welche die zu kopierende Software umfasst, 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.The Development of software poses in the manufacture of products, such as cell phones or cars, a significant Cost factor dar. Since software is easy to copy, for example by copying a CD (Compact Disc Disc), which includes the software to be copied, are created for software manufacturers high sales losses. Besides copying entire software packages, such as a complete operating system CD, too Parts of such software, such as single Dynamic Link Libraries (DLL - Dynamic Link Library) in other software products as pirated copy become.

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.Of the The invention is based on the object, a method and a device to provide an at least partial copy of a second Software is detected in a first software, the procedure and the device is both robust to changes in the copy as well applicable to existing software.

Diese Aufgabe wird durch die unabhängigen Ansprüche gelöst. Weiterbildungen der Erfindung finden sich in den abhängigen Ansprüchen.These Task is by the independent claims solved. Further developments of the invention can be found in the dependent claims.

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) Ausführen der ersten Software, 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;
  • b) Ausführen der zweiten Software, 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 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 größer als ein Schwellenwert ist.
In a method of detecting a pirated copy in which a first software comprises a copy of at least part of a second software, the following steps are performed.
  • a) executing the first software, wherein in a occurring during a procedure change writing and / or reading a parameter group of a procedure instance on and / or from a stack at least one characteristic of this writing and / or reading operation parameters in one for an occurrence of Write and / or read temporal order is recorded in a first document;
  • b) executing the second software, wherein at a taking place during a procedure change writing and / or reading a parameter group of a procedure instance on and / or. at least one parameter characteristic of this writing and / or reading process is recorded in a second document by a stack memory in a chronological order for an occurrence of the writing and / or reading operations;
  • c) forming at least one correlation value by correlating at least one of the characteristic parameters of at least a portion of the second document with at least one of the associated characteristic parameters of at least a portion of the first document;
  • d) indicating the presence of piracy if the correlation value is greater than a threshold.

Dieses Verfahren ermöglicht eine Raubkopie einer zweiten Software bzw. Teile einer zweiten Software in einer ersten Software durch Aufnahme von charakteristischen Parametern während der jeweiligen Ausführung 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.This Procedure allows a pirated copy of a second software or parts of a second software in a first software by recording characteristic parameters while the respective execution demonstrated. This is done by using the correlation value allows that despite changes in the first software opposite the second software the pirated copy is nevertheless recognized, because of the Correlation value a similarity describes two sections of the first and the second software. On the other hand, there are no changes in the first or second software required because the recording or capture of the characteristic Parameter by means of a stand-alone Program, which evaluates functions of the operating system, take place can. Thus, even existing software can be examined for pirated copies.

Vorzugsweise werden als charakteristischer Parameter ein Wert der Parametergruppe und/oder ein Ausführungszeitpunkt 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 charakteristischen 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 Prozedurinstanz;
  • – 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.
Preferably, a value of the parameter group and / or an execution time of the procedure change are used as the characteristic parameter. By using one of the values of the parameter group, specific behavioral properties of the procedure instance to be invoked and / or invoked can be accurately analyzed. Using the execution time, a time chart can be created indicating when the procedure change occurred. With the aid of these characteristic parameters, a characteristic behavior of the procedure instances can be described in detail. In particular, the following characteristic parameters of the parameter group can be used:
  • - number of variables of a called procedure instance;
  • - Number of bytes of the variables of the called procedure instance;
  • - number of local variables of a calling procedure instance;
  • Number of bytes of the local variables of the calling procedure instance;
  • - Specifies whether a recursive call takes place between the called and the invoked procedure instance;
  • - Specification of a respective memory address of the called and / or the procedure instance to be called.

Diese charakteristischen Parameter der Parametergruppe können in einfacher Weise bei dem Prozedurwechsel erfasst werden.These characteristic parameters of the parameter group can be found in be easily detected at the procedure change.

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 Betracht gezogen wird.Preferably be several sections of the second document with the associated characteristic Parameters correlated at least with a portion of the first document and from it for each correlated section of the second document as a result an associated Correlation value formed and a copy displayed, if a plurality the correlation values are greater than is a respective threshold. Thus, a reduction of a Rate of erroneously detected pirated copies can be achieved because more than one correlation value for the Determining whether pirated or not pirated is considered becomes.

In einer alternativen Weiterbildung werden mehrere Abschnitte des zweiten Dokuments mit den dazugehörigen charakteristi schen 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 zumindest 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.In an alternative training will be several sections of the second Document with the corresponding Characteristic parameters with at least a portion of first document correlates and therefrom for each correlated section of the second document, as a result, an associated correlation value is formed and display a copy if at least one of the correlation values greater than a first threshold and the other correlation values, respectively greater than a second threshold. This alternative also allows a reduction by mistake detected pirated copies.

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, 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;
  • – einem zweiten Mittel zum Ausführen der zweiten Software, 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 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.
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 first means for executing the first software, wherein during a procedure change takes place writing and / or reading operation of a parameter group of a procedure instance on and / or from a stack at least one characteristic of this writing and / or reading operation parameters in a for an occurrence of the writing and / or reading operations in chronological order is recorded in a first document;
  • 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 process is stored in one for a an occurrence of the writing and / or reading in chronological order is recorded in a second document;
  • A third means for forming at least one correlation value by correlating at least one of the characteristic parameters of at least a portion of the second document with at least one of the associated characteristic parameters of at least a portion of the first document;
  • A fourth means for comparing the at least one correlation value with at least one threshold value;
  • - a fifth means for indicating the presence of the pirated copy, if the correlation value is greater than a threshold value.

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.With Using this device, the method is implementable and executable. The Method and the device can as hardware, as software running on a processor or as Combination of hardware and software.

Die Erfindung und ihre Weiterbildungen werden nachfolgend anhand der Zeichnung näher erläutert:The Invention and its developments are described below with reference to the Drawing closer explains:

Es zeigen:It demonstrate:

1 ein Programmablauf einer Software, bei dem mehrere Prozedureinheiten aufgerufen werden; 1 a program flow of a software in which several procedure units are called;

2 eine Belegung eines Stapelspeichers während eines Programmablaufs; 2 an occupancy of a stack during a program flow;

3 ein Ablaufdiagramm eines Ausführungsbeispiels; 3 a flowchart of an embodiment;

4A, 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; 4A , B, C, D are sections of a filling level of the stack for a first and a second software, a pattern to be searched within the respective fill levels of the stack and distribution of the correlation value over time;

5 eine Vorrichtung zur Durchführung des Verfahrens zum Nachweis einer Raubkopie. 5 an apparatus for performing the method for detecting a pirated copy.

Elemente mit gleicher Funktion und Wirkungsweise sind in den 1 bis 5 mit denselben Bezugszeichen versehen.Elements with the same function and mode of action are in the 1 to 5 provided with the same reference numerals.

In 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 ware mit den Maschinenbefehlen kann durch Kompilieren und Linken eines C-Programms mit Hilfe eines Entwicklungspakets, beispielsweise dem Microsoft Visual Studio, erstellt werden.In 1 is a program flow of a software to see. 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 machine command software can be created by compiling and linking a C program using a development package such as Microsoft Visual Studio.

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 Aufrufe bewirken, dass Daten, wie beispielsweise Registerinhalte des Mikroprozessors von einem oder auf einen Stapelspeicher (Stack) gelesen bzw. geschrieben werden.The Software can be divided into multiple procedure instances PI. Within each procedure instance PI, machine instructions become sequential executed. It will be during or other procedure instances at the end of each procedure instance called, i. a procedure change takes place. These calls cause data, such as register contents of the microprocessor read or written from one or to a stack become.

Der Prozedurwechsel mit den Lese- und Schreibvorgängen LV, SV werden anhand der 1 näher erläutert. Dabei wird während des Ablaufs einer ersten Prozedurinstanz PI1 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 PI1 auf dem Stapelspeicher abgelegt werden. Im Allgemeinen wird eine Parametergruppe PG der Prozedurinstanz PI, PI1 auf den bzw. von dem Stapelspeicher SP geschrieben bzw. gelesen. In diesem Ausführungsbeispiel umfasst die Parametergruppe PG die Registerinhalte und lokale Variablen der ersten Prozedurinstanz PI1. Ferner stellt die erste Prozedurinstanz PI1 eine aufrufende Prozedurinstanz und die zweite Prozedurinstanz PI2 eine aufgerufene Prozedurinstanz dar.The procedure change with the read and write operations LV, SV are based on the 1 explained in more detail. In this case, a second procedure instance PI2 is called during the course of a first procedure instance PI1. In this case, 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. Furthermore, values of local variables of the first procedure instance PI1 can also be stored on the stack. In general, a parameter group PG of the procedure instance PI, PI1 is written to or read from the stack SP. In this embodiment, the parameter group PG includes the register contents and local variables of the first procedure instance PI1. Furthermore, the first procedure instance PI1 represents a calling procedure instance and the second procedure instance PI2 represents an invoked procedure instance.

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 PI1 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 PI1 zugeordnet werden.To Calling the second procedure instance PI2 will be the individual machine commands the second procedure instance processed. Upon reaching the end the second procedure instance PI2 returns the program flow to the first Procedure instance PI1 back. At the time of the procedure change from the first to the second procedure instance stored data from the stack SP read by reading LV. These read data include For example, register contents contained in the corresponding registers written by the microprocessor or even local content Data associated with the local variables of a procedure instance PI1 become.

Nachdem innerhalb der ersten Prozedurinstanz PI1 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 Prozedurinstanz 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 Prozedurinstanz 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 PI1 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 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 [1].After further machine instructions have been executed within the first procedure instance PI1, the following is intended to jump to a third procedure instance PI3. In this case, during the change from the first to the third procedure instance, a write operation SV according to the above description takes place. Within the third procedure instance, a fourth procedure instance PI4 is called, whereby again a writing process SV is executed. Upon completion of the program flow of the fourth procedure instance PI4, the third procedure instance PI3 is jumped back, whereby a read operation is performed. This third procedure instance PI3 is continued to its end and then, with the aid of another read operation, the first procedure instance PI1 is called. During the respective procedure changes, the data belonging to the respective procedure instances are written to the stack SP or read from the stack SP. These read and write operations LV, SV are in 1 symbolically represented by arrows, with the aid of these arrows, the jumps carried out during the program execution of the software between the procedure instances PI are reproduced. The use of stacks is known to a person skilled in the art, see for example [1].

Mit Hilfe von 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 PI1, ..., PI4 wurden in dem Ausführungsbeispiel gemäß 1 in der folgenden Reihenfolge aufgerufen:
PI1 → PI2 → PI1 → PI3 → PI4 → PI3 → PI1.
With the help of 2 In the following, a fill level of the stack during the execution of a software with the individual procedure instances over a time axis T will be explained in greater detail. The individual procedure instances PI1,..., PI4 were used in the exemplary embodiment according to FIG 1 called in the following order:
PI1 → PI2 → PI1 → PI3 → PI4 → PI3 → PI1.

Diese Abfolge der einzelnen Prozedurinstanzen ist im unteren Bildteil von 2 abgedruckt. Im oberen Bildteil der 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 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.This sequence of the individual procedure instances is in the lower part of the picture 2 printed. In the upper part of the picture 2 is 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 given, for example, in bytes, with each graduation mark of the fill level F in 2 each corresponds to 100 bytes. Thus, for example, when the second procedure instance PI2 is called by the write operation SV, 250 bytes are written to the stack memory. Upon completion of the second procedure instance PI2, in the following read operation LV, the 250 bytes are read from the stack. Both subsequent procedure changes are handled in an analogous manner. In 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.

Das erfindungsgemäße Verfahren erfasst zu denjenigen Ausführungszeitpunkten AZ, an denen ein Prozedurwechsel stattfindet, charakteristische Parameter CP1, ..., 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 erfassten Parametergruppe PG generiert werden. Hierbei kann ein erster charakteristischer Parameter CP1 einer Anzahl an Bytes aller lokalen Variablen der aufrufenden Prozedurinstanz PI1 entsprechen. Im Ausführungsbeispiel gemäß 1 wurden bei dem Prozedurwechsel von PI1 nach PI2 250 Bytes auf den Stapelspeicher geschrieben. Diese 250 Bytes umfassen beispielsweise 64 Bytes, welche die Registerwerte umfassen, und 186 Bytes, die Werte der lokalen Variablen der ersten Prozedurinstanz PI1 beinhalten. Somit beschreibt der erste charakteristische Parameter CP1 die Anzahl an Bytes der lokalen Variab len der ersten Prozedurinstanz PI1, das heißt der aufrufenden Prozedurinstanz, welche im vorliegenden Ausführungsbeispiel CP1 = 186 beträgt.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. Furthermore, a characteristic parameter can also be generated from a summary or evaluation of the parameter group PG detected for the procedure change. Here, a first characteristic parameter CP1 may correspond to a number of bytes of all local variables of the calling procedure instance PI1. In the embodiment according to 1 During the procedure change from PI1 to PI2 250 bytes were written to the stack. These 250 bytes include, for example, 64 bytes comprising the register values and 186 bytes including values of the local variables of the first procedure instance PI1. Thus, the first characteristic parameter CP1 describes the number of bytes of the local variables of the first procedure instance PI1, that is, the calling procedure instance, which in the present embodiment is CP1 = 186.

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 Informationen, die zu einem Prozedurwechsel zuordenbar sind, als charakteristische Parameter CP1, ..., CP4 bezeichnet.A Detecting the parameter group PG is realized, for example, by that when calling a function of the software that the read or Write operation LV, SV performs, Data of the calling and / or the called procedure instance, this means the parameter group, are detected. Furthermore, in the context of the implementation of the Method only a part of the parameter group or also an information, by evaluating one or more data of the parameter group is obtained. The one in a read or write obtained data or information are in a document for later further processing organized. Furthermore, it is useful in practice, too each stored information or stored data the execution time the recording of this information or data to log. In general, this information becomes a procedure change can be assigned, referred to as characteristic parameters CP1, ..., CP4.

In 3 ist ein Ablaufdiagramm für ein Ausführungsbeispiel dargestellt. Nach dem Start des Ablaufdiagramms im Zustand STA wird mit Hilfe des ersten Schritts X1 ein erstes Dokument D1 für die erste Software S1 erzeugt. In dem ersten Schritt X1 wird während des Ausführens der ersten Software S1 bei Schreib- und/oder Lesevorgängen zumindest ein erster charakteristischer Parameter CP1 für den Prozedurwechsel in dem ersten Dokument D1 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 2 näher erläutert worden. Das erste Dokument kann den Füllstand F über der Zeit in folgender Form wiedergeben:

Figure 00090001
In 3 a flowchart for an embodiment is shown. After the start of the flowchart in state STA, a first document D1 for the first software S1 is generated with the aid of the first step X1. In the first step X1, during the execution of the first software S1 during writing and / or reading operations, at least one first characteristic parameter CP1 for the procedure change is detected in the first document D1. For example, the first document may include the level F of the stack SP over the time of executing the first software. This is already based on 2 has been explained in detail. The first document can display level F over time in the following form:
Figure 00090001

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.The first line of this table gives the execution times AZ above the Time T for example in milliseconds ms. The second line reflects the level the stack in bytes again. This includes the level between 0 and 40 ms 0 bytes, between 40 and 80 ms 250 bytes etc.

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 X1. Auch die Darstellung des zweiten Dokuments D2 ist analog zum ersten Dokument D1. In einem dritten Schritt X3 wird durch Korrelation des zumindest einem charakteristischen Parameter CP1 zumindest eines Abschnitts des zweiten Dokuments D2 mit zumindest einem der charakteristischen Parameter CP1 zumindest eines Abschnitts des ersten Dokuments D1 ein Korrelationswert KW gebildet. Der Korrelationswert KW gibt an, inwieweit korrelierte Abschnitte des ersten und des zweiten Dokuments D1, D2 ähnlich sind. Eine exemplarische Vorgehensweise des dritten Schritts zur Bildung des Korrelationswertes KW wird nachfolgend anhand von 4 näher ausgeführt. 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. 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 A1 im Verlauf des Füllstands F aus 4A ausgewählt. Dieser ausgewählte erste Abschnitt A1 ist in 4C wiedergegeben. Innerhalb des Verlaufs des Füllstands, der sich beim Ausführen der zweiten Software S2 ergibt, siehe 4B, wird nun dieser erste Abschnitt A1 gesucht. Hierzu sind statistische Methoden einem Fachmann geläufig, mit Hilfe derer der Verlauf des Füllstands des ersten Abschnitts A1 mit dem Füllstandsverlauf aus 4B korreliert werden kann. Hierbei ergibt sich, wie in 4D gezeigt, zum Zeitpunkt T1 ein hoher Korrelationswert. Zu den Zeitpunkten, die nicht dem ersten Zeitpunkt T1 entsprechen, ergeben sich Korrelationswerte, die 0 oder klein sind.In a second step X2, a second document D2 is generated for the second software S2. The procedure is analogous to the first step X1. The representation of the second document D2 is analogous to the first document D1. In a third step X3, a correlation value KW is formed by correlating the at least one characteristic parameter CP1 of at least one section of the second document D2 with at least one of the characteristic parameters CP1 of at least one section of the first document D1. The correlation value KW indicates the extent to which correlated portions of the first and second documents D1, D2 are similar. A typical procedure of the third step for forming the correlation value KW is described below with reference to FIG 4 detailed. 4A shows the progress of the fill level of the stack when running the first software over time T. This history is stored in the first document. 4B shows a further course of the stack in the execution of the second software S2. This history is stored in the second document. To form the correlation value KW, a first section A1 becomes out in the course of the filling level F. 4A selected. This selected first section A1 is in 4C played. Within the course of the level that results when running the second software S2, see 4B , now this first section A1 is searched. For this purpose, 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 A1 with the fill level profile 4B can be correlated. This results, as in 4D shown at the time point T1 a high correlation value. At the times that do not correspond to the first time T1, there are correlation values that are 0 or small.

Wie in 4D zu sehen, überschreitet zum ersten Zeitpunkt T1 der Korrelationswert KW einen vorgebbaren Schwellenwert SW. Beispielsweise beträgt der Schwellenwert SW = 0,5 und der Korrelationswert KW = 0,75. Somit ist in dem Füllstandsverlauf, der beim Ausführen der zweiten Software S2 entsteht, ein ähnliches Verhalten der zweiten Software wie beim Ausführen der ersten Software entdeckt worden.As in 4D can be seen, exceeds the first time T1, the correlation value KW a predetermined threshold SW. For example, the threshold SW = 0.5 and the correlation value KW = 0.75. Thus, in the level history that arises when executing the second software S2, a similar behavior of the second software as when executing the first software has been discovered.

Wie in 3 in einem vierten Schritt angegeben, wird zumindest der eine in dem dritten Schritt X3 erzeugte Korrelationswert KW mit einem vorgebbaren Schwellenwert SW verglichen. Ist der Korrelationswert KW größ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 größ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.As in 3 indicated in a fourth step, at least one of the correlation value KW generated in the third step X3 is compared with a predefinable threshold SW. If the correlation value KW is greater than the threshold 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 from the second software have been copied, ie a pirated copy has thus been discovered. The fifth step is then ended in the END state.

Findet sich jedoch im vierten Schritt X4 kein Korrelationswert KW, der größer als der vorgebbare Schwellenwert SW ist, so wird das Ablaufdiagramm im Pfad N fortgesetzt, welcher das Ablaufdiagramm im Zustand END terminiert.finds However, in the fourth step X4 no correlation value KW, the greater than is the predetermined threshold SW, the flowchart becomes continued in the path N, which the flowchart in the state END terminated.

Im vorliegenden Ausführungsbeispiel wurde ein Abschnitt des Verlaufs des Füllstands des Stapelspeichers beim Ausführen der ersten Software mit dem Verlauf des Füllstands beim Ausführen der zweiten Software verglichen. Im Allgemeinen kann ein zu vergleichender Abschnitt an Stelle aus dem Füllstandsverlauf der ersten Software auch aus dem Füllstandsverlauf der zweiten Software benutzt werden. Dies ist exemplarisch mit einem zweiten Abschnitt A2 in 4B wiedergegeben. Im Allgemeinen wird zumindest eine Ähnlichkeit eines Abschnitts des ersten bzw. zweiten Dokuments in dem zweiten bzw. ersten Dokument gesucht.In the present embodiment, a portion of the progress of the filling level of the stack when executing the first software has been compared with the history of the level when executing the second software. In general, a section to be compared may be used instead of the fill level history of the first software also from the level history of the second software. This is exemplified by a second section A2 in FIG 4B played. In general, at least a similarity of a portion of the first and second documents in the second or first document is sought.

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 D1 durchgefü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.Of Furthermore, it is useful in practice, several sections in the second document D2 for which there is a correlation with Sections of the first document D1 should be performed. Only when for many Sections of the second document a correlation value is found the bigger than is a definable threshold SW, in step X5 the user is shown that the first software is a pirated copy of the second software.

Im Ausführungsbeispiel gemäß 4 wurde der Füllstand des Stapelspeichers über der Ausführungszeit der jeweiligen Software verwendet. Im Allgemeinen können verschiedenste charakteristische Parameter CP1, ..., 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 lokalen 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.In the embodiment according to 4 The level of the stack was used over the execution time of each software. In general, a wide variety of characteristic parameters CP1,..., CP4 can be used, which characterize a procedure change. In addition to the level of the stack, 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 variables of a calling procedure instance, or a number of bytes of local variables the calling procedure instance are considered as characteristic parameters. Furthermore, alternatively or additionally, 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.

Ferner können auch Kombinationen von charakteristischen Parametern 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 Korrelationswerte KW1, KW2, KW3 verwendet, so wird eine Raubkopie angezeigt, falls eine Mehrzahl an Korrelationswerten jeweils größer als ein dazugehöriger Schwellenwert ist. Folgendes Zahlenbeispiel verdeutlicht dies:
KW1 = 0,5; KW2 = 0,3; KW3 = 0,25
SW1 = 0,4; SW2 = 0,4; SW3 = 0,4
Furthermore, combinations of characteristic parameters can also be taken into account in the formation of the correlation value. For example, in addition to the pure level of the stack, a number of variables of the called procedure instance are taken into account. Thus, 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. The skilled person is familiar with further statistical methods for carrying out correlations with one or more characteristic parameters, so that this will not be discussed further. If a plurality of correlation values KW1, KW2, KW3 are used, a pirated copy is displayed if a plurality of correlation values are each greater than an associated threshold value. The following numerical example illustrates this:
KW1 = 0.5; KW2 = 0.3; KW3 = 0.25
SW1 = 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 this connection is only the second correlation value KW2> SW2, so that no pirated copy is detected becomes. If SW3 = 0.2, then KW2> SW2 and KW3> SW3. So a pirate copy is detected.

In einer alternativen Ausführungsform wird eine Raubkopie bereits erkannt, falls zumindest einer der Korrelationswerte größer als der dazugehörige Schwellenwert ist. Für die im obigen Absatz genannten 2 Beispiele bedeutet dies, dass für jedes Beispiel eine Raubkopie detektiert wird.In an alternative embodiment a pirated copy is already detected if at least one of the correlation values greater than the associated one Threshold is. For the 2 examples mentioned in the above paragraph mean that for each Example, a pirated copy is detected.

Eine Auswahl des bzw. der Schwellenwerte SW, S1, ..., SW3 hängt von folgenden Aspekten ab:

  • a) Soll eine Übereinstimmung zwischen zu vergleichenden Abschnitten der ersten und der zweiten Software sehr genau sein, so wird der jeweilige Schwellenwert nahe dem maximalen Korrelationswert gewählt. Hierbei ist zu beachten, dass kleine Änderungen, z.B. aufgrund von Änderungen der Maschinenbefehle in den Abschnitten oder wegen Laufzeitschwankungen während des Ausführens der ersten und zweiten Software, einen niedrigen Korrelationswert d.h. eine niedrige Ähnlichkeit, ergibt und somit kopierte Abschnitte bzw. die Raubkopie nicht erkannt wird.
  • b) Wird ein niedriger Schwellenwert SW als der maximale Korrelationswert 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.
A selection of the threshold (s) SW, S1, ..., SW3 depends on the following aspects:
  • a) If a match between sections of the first and the second software to be compared is to be very accurate, the respective threshold value is chosen close to the maximum correlation value. It should be noted that small changes, eg due to changes in the machine instructions in the sections or due to runtime fluctuations during the execution of the first and second software, a low correlation value ie a low similarity results, and thus copied sections or pirated copy is not recognized ,
  • b) If 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, sections will be recognized as copies that are not actually copies.

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-Übereinstimmung 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 hängt 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 Laufzeitverhalten auftreten, so dass in diesem Fall ein niedrigerer Schwellenwert einzustellen ist, als bei einem Realtime Betriebssystem.takes the correlation value KW, for example, a value range of -1 to 1 a, where the value is 1 exact match and the value -1 full Disagreement represents, for example, a value of KW = 0.8 a low rate with an indication of one mistakenly detected pirated copy and at the same time this value allows a tolerance against small changes in machine code and against changes in the runtime behavior. A concrete threshold SW depends, for example. from the runtime behavior of a computer on which the first and run second software becomes. If the computer uses a multitasking operating system, then can changes occur in runtime behavior, so that in this case a lower Threshold is set as with a real-time operating system.

5 zeigt eine Ausführungsform der Vorrichtung in Form eines Geräts G, welches beispielsweise als tragbares Gerät in einem Mobilfunkgerät oder als stationär betriebenes Gerät ausgeführt ist. Das Gerät G verfügt über ein erstes Mittel M1, mit dem die erste Software S1 ausgeführt wird. Dabei werden während des Prozedurwechsels bei Schreib- und/oder Lesevorgängen charakteristische Parameter in einem ersten Dokument D1 aufgenommen. In dem zweiten Mittel M2 wird die zweite Software S2 ausgeführt. Während des Ausführens 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 KW1, ..., KW3 erfasst. Diese ermittelten Korrelationswerte werden in dem vierten Mittel M4 mit einem oder mehreren vorgebbaren Schwellenwerten SW1, ..., SW4 verglichen. Sollten ein oder mehrere Korrelationswerte größ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 Benutzer auf einem Display DD wiedergegeben werden. Die Mittel M1, ..., M5, das erste und zweite Dokument D1, D2, der Stapelspeicher SP und das Display DD sind über das Verbindungsnetzwerk X zum Austausch von Informationen und Daten miteinander verbunden. 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 mobile device or as a stationary operated device. The device G has a first means M1, with which the first software S1 is executed. During the procedure change during writing and / or reading operations, characteristic parameters are recorded in a first document D1. In the second means M2, the second software S2 is executed. During execution, characteristic parameters are detected 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. These ascertained 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 to say that at least sections of the first software are almost or completely identical to sections of the second software, can be displayed. This display can be reproduced, for example, for a user on a display DD. The means M1, ..., M5, the first and second documents D1, 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.

Literaturliterature

  • [1] Stapelspeicher, Wikipedia-Enzyklopädie, siehe http://de.wikipedia.org/wiki/stack[1] Stack Memory, Wikipedia Encyclopedia, see http://de.wikipedia.org/wiki/stack

Claims (6)

Verfahren zum Nachweis einer Raubkopie, bei der eine erste Software (S1) eine Kopie von zumindest einem Teil einer zweiten Software (S2) umfasst, mit folgenden Schritten a) Ausführen der ersten Software (S1), 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 (CP1, ..., CP4) in einer für ein Auftreten der Schreib- und/oder Lesevorgänge zeitlichen Reihenfolge in einem ersten Dokument (D1) 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 Lesevorgang charakteristischer Parameter (CP1, ..., 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 Korrelation zumindest einer der charakteristischen Parameter (CP1) zumindest eines Abschnitts des zweiten Dokuments (D2) mit zumindest einem der dazugehörigen charakteristischen Parameter (CP1) zumindest eines Abschnitts des ersten Dokuments (D2); d) Anzeige eines Vorhandenseins der Raubkopie, falls der Korrelationswert (KW) größer als ein Schwellenwert (SW) ist.A method for detecting a pirated copy, wherein a first software (S1) comprises a copy of at least a part of a second software (S2), comprising the following steps: a) executing the first software (S1), wherein a write operation occurring during a procedure change and / or reading a parameter group (PG) of a procedure instance (PI) on and / or from a stack memory (SP) at least one parameter (CP1, ..., CP4) characteristic of this writing and / or reading process in one of a Occurrence of the writing and / or reading chronological order in a first document (D1) is recorded; b) executing the second software (S2), wherein at least one of a parameter group (PG) of a procedure instance (PI) on one and / or of a stack memory (SP) is read and / or read during a procedure change. and / or reading of characteristic parameters (CP1, ..., CP4) in a chronological order for occurrence of the writing and / or reading operations recorded in a second document (D2); c) forming at least one correlation value (KW) by correlation of at least one of the characteristic parameters (CP1) of at least a portion of the second document (D2) with at least one of the associated characteristic parameters (CP1) of at least a portion of the first document (D2); d) indicating the presence of piracy if the correlation value (KW) is greater than a threshold value (SW). Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass als charakteristischer Parameter (CP1, ..., CP4) ein Wert der Parametergruppe (PG) oder ein Ausführungszeitpunkt (AZ) des Prozedurwechsels verwendet wird.Method according to claim 1, characterized in that that as characteristic parameter (CP1, ..., CP4) a value of Parameter group (PG) or execution time (AZ) of the procedure change is used. Verfahren nach Anspruch 2, dadurch gekennzeichnet, dass zumindest einer der folgenden Parameter von der Parametergruppe (PG) umfasst wird: – Anzahl an Variablen einer aufgerufenen Prozedurinstanz (PI1); – Anzahl an Bytes der Variablen der aufgerufenen Prozedurinstanz (PI1); – Anzahl an lokalen Variablen einer aufrufenden Prozedurinstanz (PI2); – Anzahl an Bytes der lokalen Variablen der aufrufenden Prozedurinstanz (PI2); – Angabe, ob ein rekursiver Aufruf zwischen aufgerufener und aufzurufender Prozedurinstanz (PI1, PI2) stattfindet; – Angabe einer jeweiligen Speicheradresse der aufgerufenen und/oder der aufzurufenden Prozedurinstanz (PI1, PI2).Method according to claim 2, characterized, that at least one of the following parameters from the parameter group (PG) is included: - Number at variables of a called procedure instance (PI1); - Number bytes of the variables of the called procedure instance (PI1); - Number on local variables of a calling procedure instance (PI2); - Number bytes of the local variables of the calling procedure instance (PI2); - Specification, whether a recursive call between invoked and invoked Procedure instance (PI1, PI2) takes place; - Specification of a respective memory address the called and / or the procedure instance to be called (PI1, PI2). Verfahren nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, dass mehrere Abschnitte des zweiten Dokuments (D2) mit den dazugehörigen charakteristischen Parametern (CP1) zumindest mit einem Abschnitt des ersten Dokuments (D1) korreliert und daraus für jeden korrelierten Abschnitt des zweiten Dokuments (D2) als Ergebnis ein dazugehöriger Korrelationswert (KW1, KW2, KW3) gebildet wird, eine Kopie angezeigt wird, falls eine Mehrzahl der Korrelationswerte (KW1, KW2, KW3) größer als ein jeweiliger Schwellenwert (SW1, SW2, SW3) ist.Method according to one of claims 1 to 3, characterized, that several sections of the second document (D2) with the associated characteristic parameters (CP1) at least with a section of the first document (D1) correlates with and for each Correlated section of the second document (D2) as a result Related Correlation value (KW1, KW2, KW3) is formed, a copy is displayed if a plurality of the correlation values (KW1, KW2, KW3) greater than is a respective threshold (SW1, SW2, SW3). Verfahren nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, dass mehrere Abschnitte des zweiten Dokuments (D2) mit den dazugehörigen charakteristischen Parametern (CP1) 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 (KW1, KW2, KW3) gebildet wird, eine Kopie angezeigt wird, falls zumindest einer der Korrelationswerte (KW1) größer als ein erster Schwellenwert (SW1) und die weiteren Korrelationswerte (KW2, KW3) jeweils größer als ein zweiter Schwellenwert (SW2) sind.Method according to one of claims 1 to 3, characterized, that several sections of the second document (D2) with the associated characteristic parameters (CP1) with at least one section of the first document (D2) correlates and for each Correlated section of the second document (D2) as a result Related Correlation value (KW1, KW2, KW3) is formed, a copy is displayed if at least one of the correlation values (KW1) greater than a first threshold (SW1) and the other correlation values (KW2, KW3) each greater than a second threshold (SW2). Vorrichtung zum Nachweis einer Raubkopie, bei der eine erste Software (S1) 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 (M1) zum Ausführen der ersten Software (S1), 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 (CP1, ..., CP4) in einer für ein Auftreten der Schreib- und/oder Lesevorgänge zeitlichen Reihenfolge in einem ersten Dokument (D1) 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 (CP1, ..., 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 Korrelationswerts (KW) durch Korrelation zumindest einer der charakteristischen Parameter (CP1) zumindest eines Abschnitts des zweiten Dokuments (D2) mit zumindest einem der dazugehörigen charakteristischen Parameter (CP1) 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.Device for detecting a pirated copy, in which a first software (S1) comprises a copy of at least part of a second software (S2), in particular for carrying out a method according to one of the preceding claims, having - a first means (M1) for carrying out the first software (S1), wherein at a taking place during a procedure change writing and / or reading a parameter group (PG) of a procedure instance (PI) on one and / or from a stack (SP) at least one for this writing and / or reading characteristic parameter (CP1, ..., CP4) in a time sequence for occurrence of the writing and / or reading operations in a first document (D1) is receivable; - A second means (M2) for executing the second software (S2), wherein at a taking place during a procedure change writing and / or reading a parameter group (PG) of a procedure instance (PI) to or from a stack (SP) at least a parameter (CP1, ..., CP4) characteristic of this writing and / or reading process can be recorded in a second document (D2) in a chronological order for an occurrence of the writing and / or reading operations; - Third means (M3) for forming at least one correlation value (KW) by correlation of at least one of the characteristic parameters (CP1) at least a portion of the second document (D2) with at least one of the associated characteristic parameters (CP1) at least a portion of the first document (D2); A fourth means (M4) for comparing the at least one correlation value (KW) with at least one Threshold (SW); - a fifth means (M5) for indicating the presence of the pirated copy, if the correlation value (KW) is greater than a threshold value (SW).
DE102006004240A 2006-01-30 2006-01-30 Method and device for detecting pirated copy Withdrawn DE102006004240A1 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
DE102006004240A DE102006004240A1 (en) 2006-01-30 2006-01-30 Method and device for detecting pirated copy
PCT/EP2006/065680 WO2007085308A1 (en) 2006-01-30 2006-08-25 Method and device for the detection of a pirated copy
CN200680052033.4A CN101517585B (en) 2006-01-30 2006-08-25 Method and device for the detection of a pirated copy
EP06793013A EP1979848A1 (en) 2006-01-30 2006-08-25 Method and device for the detection of a pirated copy

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102006004240A DE102006004240A1 (en) 2006-01-30 2006-01-30 Method and device for detecting pirated copy

Publications (1)

Publication Number Publication Date
DE102006004240A1 true DE102006004240A1 (en) 2007-08-09

Family

ID=37671191

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102006004240A Withdrawn DE102006004240A1 (en) 2006-01-30 2006-01-30 Method and device for detecting pirated copy

Country Status (4)

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

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104424402B (en) * 2013-08-28 2019-03-29 卓易畅想(北京)科技有限公司 It is a kind of for detecting the method and device of pirate application program

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
EP1387280A1 (en) * 2001-04-05 2004-02-04 Ed-Contrive Inc. Method for preventing unauthorized copy application program execution, its program, its program recording apparatus, and its program recording medium
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

Also Published As

Publication number Publication date
WO2007085308A1 (en) 2007-08-02
CN101517585B (en) 2012-10-10
EP1979848A1 (en) 2008-10-15
CN101517585A (en) 2009-08-26

Similar Documents

Publication Publication Date Title
DE69909945T2 (en) Method and arrangement for correlating profile data dynamically generated by an optimized executable program with source code instructions
DE69918334T2 (en) GENERATION OF COMPILED PROGRAMS FOR INTERPRETATE TIME ENVIRONMENTS
EP2095238B1 (en) Method for testing a computer programme
DE69932371T2 (en) Movable instrumentation tags for testing and troubleshooting a computer program
DE112008003732T5 (en) Automatic Reproduction Test Device and Automatic Reproduction Test Procedure in an Embedded System
DE69905776T2 (en) Language processing method with little effort and storage space for profile data collection
DE102016107718A1 (en) Reading out error vectors from a memory unit
DE3850444T2 (en) Program management process for distributed processing systems and customized device.
DE69807021T2 (en) Method and device for implementing multiple return points
EP1067460B1 (en) Recording carrier with recoverable initial state base data and process for its production
EP1622022A1 (en) Automatic generation of test cases
DE102006004240A1 (en) Method and device for detecting pirated copy
DE102012210482A1 (en) Method and system for migrating business process instances
WO2000043885A1 (en) Method for tracing data
DE102005041672A1 (en) Single instruction/multiple data processor architecture for storing and processing e.g. audio data, has address-memory arrangement that stores access addresses, where original data is stored as data depending on access addresses
DE102007015507B4 (en) Processor with first and second modes of operation and method of operation
DE102005033698A1 (en) Method for exporting usage rights to electronic data objects
WO2001098901A2 (en) Method and device for optimising a test programme
EP1505399B1 (en) Method for Generating Test Data for functional test of data processing circuits
DE10325513B4 (en) Method and apparatus for creating a behavioral aspect of a formal verification circuit
DE10325843A1 (en) Management of resource data in a document data stream for a computerized printing system, whereby resources are uniquely identified to enable their single or multiple calling in a variable document data stream
DE10300541A1 (en) Workable data file generation method, involves dividing target name into parts at given points
DE102021128101A1 (en) Method for generating program code, method for configuring a control device and computer system
EP1675044A1 (en) Engineering system for distributed multi-user development
DE2702586A1 (en) CIRCUIT ARRANGEMENT FOR CONTROLLING MEMORY ACCESS FOR A COMPUTER

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0012140000

Ipc: G06F0021120000

Effective date: 20121206

R081 Change of applicant/patentee

Owner name: UNIFY GMBH & CO. KG, DE

Free format text: FORMER OWNER: SIEMENS AKTIENGESELLSCHAFT, 80333 MUENCHEN, DE

Effective date: 20130314

Owner name: SIEMENS ENTERPRISE COMMUNICATIONS GMBH & CO. K, DE

Free format text: FORMER OWNER: SIEMENS AKTIENGESELLSCHAFT, 80333 MUENCHEN, DE

Effective date: 20130314

R082 Change of representative

Representative=s name: FRITZSCHE PATENTANWAELTE, DE

Effective date: 20130314

Representative=s name: FRITZSCHE PATENT, DE

Effective date: 20130314

R082 Change of representative

Representative=s name: FRITZSCHE PATENT, DE

R081 Change of applicant/patentee

Owner name: UNIFY GMBH & CO. KG, DE

Free format text: FORMER OWNER: SIEMENS ENTERPRISE COMMUNICATIONS GMBH & CO. KG, 81379 MUENCHEN, DE

Effective date: 20131111

R082 Change of representative

Representative=s name: FRITZSCHE PATENT, DE

Effective date: 20131111

Representative=s name: FRITZSCHE PATENTANWAELTE, DE

Effective date: 20131111

R016 Response to examination communication
R081 Change of applicant/patentee

Owner name: UNIFY GMBH & CO. KG, DE

Free format text: FORMER OWNER: UNIFY GMBH & CO. KG, 81379 MUENCHEN, DE

R082 Change of representative

Representative=s name: FRITZSCHE PATENTANWAELTE, DE

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee