WO2013068217A1 - Verfahren zum schutz gegen reverse-engineering eines computerprogramms - Google Patents

Verfahren zum schutz gegen reverse-engineering eines computerprogramms Download PDF

Info

Publication number
WO2013068217A1
WO2013068217A1 PCT/EP2012/070567 EP2012070567W WO2013068217A1 WO 2013068217 A1 WO2013068217 A1 WO 2013068217A1 EP 2012070567 W EP2012070567 W EP 2012070567W WO 2013068217 A1 WO2013068217 A1 WO 2013068217A1
Authority
WO
WIPO (PCT)
Prior art keywords
program
computer program
code
engineering
against reverse
Prior art date
Application number
PCT/EP2012/070567
Other languages
English (en)
French (fr)
Inventor
Thomas Henties
Kai TÖDTER
Original Assignee
Siemens Aktiengesellschaft
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 Aktiengesellschaft filed Critical Siemens Aktiengesellschaft
Publication of WO2013068217A1 publication Critical patent/WO2013068217A1/de

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/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/101Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by binding digital rights to specific entities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/107License processing; Key processing
    • G06F21/1077Recurrent authorisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/109Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by using specially-adapted hardware at the client
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/123Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2125Just-in-time application of countermeasures, e.g., on-the-fly decryption, just-in-time obfuscation or de-obfuscation

Definitions

  • the invention relates to a method for protection against reverse engineering based on the concealment of the control flow.
  • Most manufacturers of commercial software systems want to prevent their intellectual property from being stolen and copied by reverse engineering.
  • One way to prevent reverse engineering, ie the understanding of the program sequences, is a "code obfuscation" or a source code obfuscation.
  • Code obfuscation is a method to ⁇ Change code to ver so that it is incomprehensible to human readers without changing the semantics of the program and is primarily used to program code - intellectual property - to protect against reverse engineering.
  • a heavy human readable form generated, but is executed by the processing machine about as fast and the same functionality as the original exercises ⁇ code -
  • a well-read and understandable program code - usually using special developed tools.
  • An alternative option for code obfuscation is an encryption of the program code. Must there be but decrypted during execution, ie at the latest at load time, the encrypted code to Kings ⁇ nen run at, potential attackers have nevertheless the possibility of such. B. using debugger to track the program flow.
  • Code obfuscation has various measures that can be used individually or together: 1. Lexical measures, such as. Equivalent formulas so ⁇ as constant transformations, variable substitution
  • the changes in the program flow may be made by compiler techniques, in particular by static analysis, e.g. dead-code analysis, to be leveled. Not necessarily the original source code is restored, but something very similar.
  • the object underlying the invention to now consists in DAR, to provide a method for protection against reverse-engineering of a computer program, in which an application of tools for static analysis and an automatic Determined ⁇ lung structures of the program is prevented as possible.
  • This object is achieved by the features of claim 1 according to the invention.
  • the other claims relate to ⁇ preferred embodiments of the invention.
  • the invention relates in essence to a method for protection against reverse engineering of a computer program, in which a general computer program is individualized depending on currently given external circumstances of a respective target system at runtime, thus an application of tools for static analysis and an automatic determination the program structures is prevented as far as possible.
  • the program is individualized as much as possible. This happens e.g. by:
  • a dongle is additional hardware that can be queried during runtime of the program. In the case of a faulty input / output operation, triggered by non-existent or faulty dongles, the program is aborted, for example. - Any additional constants are inserted (fingerprinting).
  • dead code is meant an unreachable code that is never executed at runtime, regardless of the variable values and other conditions.
  • boolean maze mazedConstant
  • the method is also much better than the usual use of a dongle, in which the principal
  • Target value but potentially uses any value to determine a program path.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Die Erfindung betrifft im Wesentlichen ein Verfahren zum Schutz gegen Reverse-Engineering eines Computerprogrammes, bei dem ein allgemeines Computerprogramm in Abhängigkeit von aktuell gegebenen äußeren Umständen eines jeweiligen Zielsystems zur Laufzeit individualisiert wird, damit eine Anwendung von Werkzeugen zur statischen Analyse und eine automatische Ermittlung der Programmstrukturen möglichst verhindert wird.

Description

Beschreibung
Verfahren zum Schutz gegen Reverse-Engineering eines Compu- terprogramms
Die Erfindung betrifft ein Verfahren zum Schutz gegen Reverse-Engineering das auf der Verschleierung des Kontrollflusses basiert . Die meisten Hersteller kommerzieller Software-Systeme möchten verhindern, dass Ihr geistiges Eigentum durch Reverse- Engineering gestohlen und kopiert werden kann. Eine Möglichkeit, Reverse-Engineering, also das Verstehen der Programmabläufe zu verhindern, ist eine „Code Obfuscation" bzw. eine Quelltextverschleierung.
Code Obfuscation ist eine Methode, um Programmcode so zu ver¬ ändern, dass dieser für menschliche Leser unverständlich wird, ohne die Semantik des Programms zu verändern und wird in erster Linie eingesetzt, um Programmcode - als geistiges Eigentum - vor Reverse Engineering zu schützen. Hierzu wird aus einem gut les- und nachvollziehbaren Programmcode - meist unter Nutzung speziell dafür entwickelter Tools - eine für Menschen schwerer lesbare Form generiert, die aber von der verarbeitenden Maschine etwa genauso schnell ausgeführt wird und die gleiche Funktionalität ausübt wie der Original¬ code .
Eine alternative Möglichkeit zur Code Obfuscation ist eine Verschlüsselung des Programmcodes. Da während der Ausführung, also spätestens zur Ladezeit, der verschlüsselte Code aber wieder entschlüsselt werden muss um ausgeführt werden zu kön¬ nen, haben potentielle Angreifer trotzdem die Möglichkeit, z. B. mittels Debugger, den Programmablauf zu verfolgen.
Zur Code Obfuscation gibt es verschieden Maßnahmen, die einzeln oder gemeinsam angewendet werden können: 1. Lexikalische Maßnahmen, wie bspw. Äquivalente Formeln so¬ wie konstante Transformationen, Variablensubstitution
und Verschlüsselung von Texten. Diese Maßnahmen können jedoch häufig zumindest teilweise automatisch rückgängig gemacht werden.
2. Änderung des Programmflusses, wie bspw. Umordnung von Anweisungen, scheinbar bedingte Anweisungen und Sprünge, Aufruf von sehr vielen Subroutinen, Einfügen von Leercode
der nichts zum Programm beiträgt und lediglich triviale oder irrelevante Berechnungen ausführt, Mischen von Funktionen und Umstrukturierung von Arrays . Die Änderungen des Programmflusses können durch Compilertechniken, insbesondere durch statische Analyse, z.B. dead-code-Analyse, egalisiert werden. Dabei wird nicht unbedingt der ursprüngliche Quellcode wieder hergestellt, aber doch etwas sehr ähnliches.
3. Abwehr spezieller Angriffe, bspw. mit Anti-Debug-Routinen, die auf die Erkennung und die frühzeitige Terminierung eines Programms bei der Erkennung eines Debuggers abzielen und mit einer Verschlüsselung, bei der Bytecode verschlüsselt und erst von einem speziellen Class-Loader entschlüsselt wird. Hiermit können aber nur bestimmte Debugger blockiert werden und wenn ein Zugang zum laufenden Code vorhanden ist, kann der Text nach der Entschlüsselung beobachtet werden.
Durch Einsatz vorhandener Werkzeuge bzw. bekannter Verfahren, ist es somit möglich die beschriebenen Verschleierungen fast vollständig zu annullieren. Herkömmliche Code Obfuscation reicht also nicht aus, um ein erfolgreiches Reverse- Engineering zu verhindern, insbesondere wenn dazu mächtige statische Analysetools eingesetzt werden.
Die der Erfindung zu Grunde liegende Aufgabe besteht nun dar- in, ein Verfahren zum Schutz gegen Reverse-Engineering eines Computerprogramms anzugeben, bei dem eine Anwendung von Werkzeugen zur statischen Analyse und eine automatische Ermitt¬ lung der Programmstrukturen möglichst verhindert wird. Diese Aufgabe wird durch die Merkmale des Patentanspruchs 1 erfindungsgemäß gelöst. Die weiteren Ansprüche betreffen be¬ vorzugte Ausgestaltungen der Erfindung.
Die Erfindung betrifft im Wesentlichen ein Verfahren zum Schutz gegen Reverse-Engineering eines Computerprogramms, bei dem ein allgemeines Computerprogramm in Abhängigkeit von aktuell gegebenen äußeren Umständen eines jeweiligen Zielsys- tems zur Laufzeit individualisiert wird, damit eine Anwendung von Werkzeugen zur statischen Analyse und eine automatische Ermittlung der Programmstrukturen möglichst verhindert wird.
Nachfolgend wird die Erfindung anhand von Ausführungs- beispielen näher erläutert.
Die im Folgenden beschriebene Verschleierung kann für sich alleine aber auch zusätzlich zu den oben beschriebenen Obfus- cation-Techniken angewendet werden.
Mit der Individualisierung wird ein weiterer Mechanismus beschrieben, der die vorhandenen Schutzmaßnahmen gegen Reverse- Engineering, die auf der Verschleierung des Kontrollflusses basieren, entscheidend verbessert.
Zunächst wird das Programm möglichst stark individualisiert. Dies geschieht z.B. durch:
- Alle statisch berechenbaren Werte werden durch die entsprechenden Konstanten ersetzt.
- Informationen, die spezifisch für das Zielsystem sind (z.B. Hardware-IOs) werden verwendet.
- Auch die optionale Verwendung von zusätzlichen Komponenten, z.B. ein Dongle, ist möglich. Ein Dongle ist eine zusätzliche Hardware, die zur Laufzeit des Programms abgefragt wer- den kann. Bei einer fehlerhaften Ein/Ausgabeoperation, ausgelöst durch nicht existente oder fehlerhafte Dongles, wird das Programm z.B. abgebrochen. - Beliebige, zusätzliche Konstanten werden einfügt (Fin- gerprinting) .
Diese o.g. individuellen Werte werden nun verwendet um die Kontrollfluss-Verschleierung zu parametrisieren . Eine
statische Analyse kann diese individuellen Werte nicht analy¬ sieren und folglich kann auch kein "dead code" entfernt werden. Unter "dead code" wird ein unerreichbarer Code verstanden, der unabhängig von den Variablenwerten und anderen Bedingungen zur Laufzeit nie ausgeführt wird.
Im Folgenden wird ein Pseudocode-Beispiel für eine semantisch äquivalente Schreibweise einer if-Anweisung gezeigt wie sie im Falle einer sehr einfachen erfindungsgemäßen Kontroll- fluss-Verschleierung auftritt.
Das Statement
if (a < b) { ... } wird hier automatisch transformiert in: boolean maze = getBool (dongle,l); oder auch alternativ in boolean maze = mazedConstant | |
classLoadingTimeGeneratedlmmutableVar ; und
if ( (maze && (a >= b) ) || (!maze && (a < b) ) {... }
Es wird also eine boolesche Variable „maze" entweder von ei¬ ner Zusatzhardware, bspw. in Form eines Dongles, abgefragt oder alternativ beim Laden aus einer systemspezifischen Konstanten „mazedConstant" in Verknüpfung mit entsprechenden spezifischen Systemeigenschaften „classLoadingTimeGenerate- dlmmutableVar" erzeugt und danach zur Verschleierung der Programmverzweigung herangezogen. Für den Fall, dass der Wert der boolschen Variablen „maze" nicht wahr ist und die Bedingung a<b der ursprünglichen if-Anweisung erfüllt ist, aber auch für den Fall, dass der Wert der boolschen Variablen „ma- ze" wahr ist und die Bedingung a<b der ursprünglichen if- Anweisung nicht erfüllt ist, wird der Wenn-Zweig der trans¬ formierte if-Anweisung bzw. für die beiden anderen Kombinationen der Sonst-Zweig ausgeführt.
Die entscheidende Verbesserung liegt darin, dass der "dead code" nicht mehr statisch analysierbar ist, da er von einer, im obigen Beispiel „maze" genannten, Eingabe-Variablen abhängt. Das heißt, selbst wenn die Möglichkeit besteht, alle Klassen nach dem Laden zu "dumpen" - also hiervon einen entsprechenden Speicherabzug zu erstellen, reicht dies nicht, um den eingefügten "dead-code" zu finden. Zusätzlich müssten hier alle Abfragen des Dongles aufgespürt und protokolliert werden oder das Programm mit allen möglichen Eingabe- Parameter-Kombinationen ausgeführt werden und dabei die Kontrollpfade protokolliert werden.
Das Verfahren ist auch wesentlich besser, als die übliche Verwendung eines Dongles, bei dem die prinzipielle
Möglichkeit besteht jede Abfrage durch alternativen Code zu ersetzen, der jede Überprüfung bestätigt. Das beschriebene Verfahren hingegen "vergleicht" nicht mit einem einzigen
Sollwert, sondern verwendet potenziell jeden möglichen Wert um einen Programmpfad zu bestimmen.

Claims

Patentansprüche
1. Verfahren zum Schutz gegen Reverse-Engineering eines Computerprogramms ,
bei dem ein allgemeines Computerprogramm in Abhängigkeit von aktuell gegebenen äußeren Umständen eines jeweiligen Zielsys tems zur Laufzeit individualisiert wird.
2. Verfahren nach Anspruch 1,
- bei dem zunächst Programmverzweigungen des Computerpro¬ gramms durch Parameterabfragen ergänzt werden,
- bei dem zur Laufzeit aus den aktuell gegebenen äußeren Umständen Parameter abgeleitet werden, und
- bei dem zur Laufzeit in Abhängigkeit der Parameter individuelle Programmverzweigungen gebildet werden.
3. Verfahren nach Anspruch 2,
bei dem die Parameter von einer individuellen Zusatzhardware abgefragt werden.
4. Verfahren nach Anspruch 2,
bei dem die Parameter zur Laufzeit individuell in Abhängig- keit der Systemzeit erzeugt werden.
PCT/EP2012/070567 2011-11-08 2012-10-17 Verfahren zum schutz gegen reverse-engineering eines computerprogramms WO2013068217A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE102011085948.9 2011-11-08
DE102011085948A DE102011085948A1 (de) 2011-11-08 2011-11-08 Verfahren zum Schutz gegen Reverse-Engineering eines Computerprogramms

Publications (1)

Publication Number Publication Date
WO2013068217A1 true WO2013068217A1 (de) 2013-05-16

Family

ID=47115864

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/EP2012/070567 WO2013068217A1 (de) 2011-11-08 2012-10-17 Verfahren zum schutz gegen reverse-engineering eines computerprogramms

Country Status (2)

Country Link
DE (1) DE102011085948A1 (de)
WO (1) WO2013068217A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113836545A (zh) * 2021-08-20 2021-12-24 咪咕音乐有限公司 代码加密方法、装置、设备及存储介质

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2913772A1 (de) 2014-02-28 2015-09-02 Wibu-Systems AG Verfahren und Computersystem zum Schutz eines Computerprogramms gegen Beeinflussung

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
BERTRAND ANCKAERT ET AL: "Run-Time Randomization to Mitigate Tampering", 29 October 2007, ADVANCES IN INFORMATION AND COMPUTER SECURITY; [LECTURE NOTES IN COMPUTER SCIENCE], SPRINGER BERLIN HEIDELBERG, BERLIN, HEIDELBERG, PAGE(S) 153 - 168, ISBN: 978-3-540-75650-7, XP019073149 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113836545A (zh) * 2021-08-20 2021-12-24 咪咕音乐有限公司 代码加密方法、装置、设备及存储介质

Also Published As

Publication number Publication date
DE102011085948A1 (de) 2013-04-18

Similar Documents

Publication Publication Date Title
EP3274825B1 (de) Verfahren und ausführungsumgebung zum gesicherten ausführen von programmbefehlen
DE102005021064B4 (de) Verfahren und Vorrichtung zum Schutz gegen Buffer Overrun-Attacken
EP3111355B1 (de) Verfahren zum schutz eines computerprogramms gegen beeinflussung und computersystem
DE202013102179U1 (de) System zu detektieren von durch eine virtuelle Maschine ausgeführtem Schadcode
DE102009041176B4 (de) Compiler-System und Verfahren zum Kompilieren eines Quellencodes zu einem verschlüsselten Maschinensprachcode
DE112017004843T5 (de) Technologien für deterministischen Codeflussintegritätsschutz
DE202011111121U1 (de) System zum Erfassen komplexer Schadsoftware
EP2188755A1 (de) Verfahren und vorrichtung zur sicherung eines programms gegen eine kontrollflussmanipulation und gegen einen fehlerhaften programmablauf
EP1798653B1 (de) Verfahren, Computerprogrammprodukt und Vorrichtung zum Schützen eines einen Funktionsblock aufweisenden Programms
DE102012205689A1 (de) Anweisungsverschlüsselungs-/-entschlüsselungsanordnung und -verfahren mit iterativer Verschlüsselungs-/Entschlüsselungsaktualisierung
EP4187417B1 (de) Erkennen einer abweichung eines sicherheitszustandes einer recheneinrichtung von einem sollsicherheitszustand
WO2013068217A1 (de) Verfahren zum schutz gegen reverse-engineering eines computerprogramms
DE102009050161A1 (de) Verfahren und Vorrichtung zum Testen eines Systems mit zumindest einer Mehrzahl von parallel ausführbaren Softwareeinheiten
EP1439446A1 (de) Verfahren zum Erweitern eines Programms um eine Kopierschutzfunktion
DE102005046696B4 (de) Verfahren zum Erzeugen von geschütztem Programmcode und Verfahren zum Ausführen von Programmcode eines geschützten Computerprogramms sowie Computerprogrammprodukt
DE60212169T2 (de) Laden von software
EP3286683A1 (de) System und verfahren zur überwachung der integrität einer von einem serversystem an ein clientsystem ausgelieferten komponente
WO2006119928A1 (de) Verfahren zum hinzufügen einer funktionalität zu einem ausführbaren ersten modul eines programmpakets
DE102014019090A1 (de) Verfahren zum Bereitstellen einer sicherheitskritischen Softwareapplikation auf einer Computereinheit
EP3745287B1 (de) Schützen einer softwareapplikation
DE602004001293T2 (de) Programmintegritätsprüfung mittels Statistiken
DE102005048029B4 (de) Compiliervorrichtung und Verfahren zum Compilieren
WO2006063876A1 (de) Verfahren und vorrichtung zur verschlüsselung und ausführung einer software-bibliothek
DE102007005887B4 (de) Hinderung bösartiger Software an der Ausführung innerhalb eines Rechnersystems
DE102005063499B4 (de) Compiliervorrichtung und Verfahren zum Compilieren

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 12780696

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 12780696

Country of ref document: EP

Kind code of ref document: A1