Code Protect im Vergleich

Die 4 besten Code Protect Anbieter im Test 2017

Code Protection und Obfuscation Software hilft Ihnen dabei, Ihren Quellcode zu schützen. So wirken Sie Reverse Engineering schon im Vorhinein entgegen und verbergen Ihr geistiges Eigentum vor neugierigen Augen.

Oliver Verhovnik
Diese Obfuscation Tools helfen Ihnen dabei, Ihren Code zu schützen.
Von Oliver Verhovnik
Jscrambler Test

Computerprogramme sind heutzutage allgegenwärtig und kommen täglich zum Einsatz. Häufig vergessen wird dabei, wie viel Zeit die Erstellung der Software beansprucht und wie viel Energie in einem Programm steckt. Stellen Sie sich vor, Sie haben ein exklusives Tool entwickelt und veröffentlicht, doch bereits nach wenigen Tagen hat sich ein Hacker durch Reverse Engineering des Quellcodes bemächtigt. Die Folgen sind fatal: Illegale Kopien Ihrer Software tauchen im Netz auf, ein immenser finanzieller Schaden droht. Im schlimmsten Fall hat der Hacker sogar eine Hintertür in den Code eingebaut, der ihm Zugriff auf die Computer Ihrer Nutzer verschafft. Der Imageschaden für Ihr Unternehmen wäre kaum auszudenken, wenn derart manipulierte Software unter Ihrem Namen vertrieben wird. Doch das muss nicht sein. Lesen Sie im Folgenden, was es mit Reverse Engineering auf sich hat und wie Sie sich gegen Softwarepiraterie und -missbrauche schützen können.

Das Wichtigste in Kürze
  • Code Protection verfolgt das Ziel, den Quellcode Ihrer Softwareprodukte vor ungewolltem Zugriff und Manipulation zu schützen.
  • Software Protection Tools haben sich meist auf einzelne Programmiersprachen fokussiert. Dabei gibt es relativ einfache Tools, sowie komplexere Lösungen, die sich mehrerer Sicherheitsmechanismen auf einmal bedienen.
  • Ein hundertprozentiger Schutz vor Reverse Engineering ist nicht umsetzbar, allerdings können Code Protection Tools den Aufwand des Reverse Engineering derart erhöhen, dass dieses für den Hacker nicht mehr rentabel ist.

Was man unter Code Protect versteht

Reverse Engineering

Beim Reverse Engineering (Umgekehrte Entwicklung) wird durch die genaue Analyse eines Programms dessen Quellcode rekonstruiert. Das Reverse Engineering ist dem eigentlichen Programmierungsprozess somit genau entgegengesetzt (reverse).

Code Protection hat als Ziel, die Rückführung eines Programms auf seinen Quellcode durch sogenanntes Reverse Engineering zu verhindern. Auf diese Weise soll sichergestellt werden, dass bis auf den rechtmäßigen Urheber niemand Änderungen am Quellcode vornehmen kann. Schützt ein Unternehmen seine Softwareprodukte nicht ausreichend, kann das fatale Folgen haben. Hacker können beispielsweise unbemerkt Hintertüren in die Software einbauen, oder den wertvollen Quellcode in eigenen Projekten einsetzen.

Grundverständnis von Programmen

Problematik von Schutzmechanismen

Source Code

Ein Programm wird in einer bestimmten Programmiersprache geschrieben (bspw. C). Diese für Menschen lesbare Form eines Programmes, die erst in einem weiteren Schritt in Maschinensprache “übersetzt” wird, bezeichnet man als Source- bzw. Quellcode.

Jeder Schutzmechanismus von Computersoftware gegen Piraterie und Missbrauch unterliegt einer prinzipiellen Problematik: Der Natur von Programmen.

Damit ein Computer ein Programm ausführen kann, muss der Quellcode in Maschinencode “übersetzt” werden. Gerade während dieses Prozesses ist die Absicherung äußerst schwierig. Denn in dem Moment, in dem der Computer die Anweisungen übergeben bekommt, ist es auch für einen Menschen möglich, diese nachzuvollziehen. Wenn er auch deutlich mehr Zeit benötigt um diese in Gänze zu verstehen.

Eine 100% Absicherung ist also nicht möglich, jedoch gibt es viele Optionen, das Reverse Engineering derart zu erschweren, dass es für den Angreifer nicht mehr rentabel ist. Diese hängen in erster Linie von der zum Einsatz kommenden Programmiersprache ab.

Typen von Programmiersprachen

Um die Funktionsweise der Code Protection zu verdeutlichen, sollen im Folgenden kurz drei klassische Programmiersprachen-Typen skizziert werden.

Assemblersprache

Die Assemblersprache stammt aus der Anfangsphase der Computer und stellt die einfachste Form einer Übersetzung in Maschinensprache dar. Ziel war es, diese für den Menschen lesbar zu machen. Deshalb gibt es zu jedem Maschinenbefehl genau eine Entsprechung in der Assemblersprache. Einer der Nachteile dieser Sprache ist es, dass die jeweiligen Befehle hardwarespezifisch sind, d.h., dass der Programmierer die Hardware, auf der das zukünftige Programm ausgeführt werden muss exakt kennen muss. In Zeiten unzähliger verschiedener Systeme, ist dies nur ein Grund weshalb reine Assemblersprache heute kaum noch zum Einsatz kommen.

Compilersprache

Um plattformunabhängige Programme konzipieren zu können musste eine neue Lösung gefunden werden. Compilersprachen übersetzen nicht mehr 1:1, sondern trennen die Beschreibung des zukünftigen Programms von der Hardware, auf der es ausgeführt wird. Das Ergebnis wird dann in einem weiteren, nachgelagerten Prozess in Maschinensprache übersetzt. Dieser Ansatz sorgt dafür, dass Quellcode auf verschiedenen Plattformen ausführbar gemacht (kompiliert) werden kann. Beispiele für reine Compilersprachen sind Pascal und C bzw. C++. Andere sprachen wie Java oder .Net gehen zwar den Weg der Compilersprache, das Ergebnis nach dem zweiten Schritt ist jedoch kein Maschinencode, sondern ein Binärcode, für dessen Ausführung eine eigene Laufzeitumgebung benötigt wird (Net Framework, Java Runtime Environment).

Interpretersprache

Die Interpretersprache ist eine weiterer Klassiker unter den Programmiersprachen. Sie ist weder ein Assembler noch ein Compiler. Programme in Interpretersprache werden - auch während sie ausgeführt werden - nicht kompiliert. Der Interpreter stellt ein Programm dar, das genau das ausführt, was der Programmierer mit seinen Befehlen beschrieben hat. Klassische Interpretersprachen sind beispielsweise Perl oder PHP.

Was Sie gegen Reverse Engineering tun können

Nach diesem knappen Überblick über die am häufigsten eingesetzten Programmiersprachen, geht es im folgenden Abschnitt darum, wie man sich gegen Reverse Engineering schützen kann. Dabei werden auch die wichtigsten Funktionen von Software Protection Tools behandelt.

Auf die Sprache kommt es an

Je nach Programmiersprache sind unterschiedliche Sicherheitsmechanismen sinnvoll. Die meisten Code Protection Tools haben sich auf eine bestimmte Programmiersprache spezialisiert und bieten dafür unterschiedliche Lösungen an. Wenn Ihr Team also hauptsächlich mit der Sprache C arbeitet, benötigen Sie ein Tool, das für diese Programmiersprache ausgelegt ist. Im Folgenden finden Sie die gängigsten Praktiken, die den Missbrauch Ihres Codes erschweren.

Je nach Programmiersprache gibt es unterschiedliche Möglichkeiten für den Schutz Ihrer Software. © pixabay.com - Je nach Programmiersprache gibt es unterschiedliche Möglichkeiten für den Schutz Ihrer Software.

Gängige Funktionen von Software Protection Tools:

Obfuscation:

Übersetzt bedeutet Obfuscation so viel wie “Benebelung”. In etwa dies ist auch bei der Quellcode Obfuscation gemeint. Genauer gesagt bezeichnet es die Verschleierung des Source Codes. Ein Obfuscator versucht den Quelltext für Menschen so schwer lesbar zu machen wie möglich. Natürlich nur soweit, dass er immer noch fehlerfrei ausgeführt werden kann.

Beispielsweise löscht ein Obfuscator erklärende Kommentare oder ersetzt Variablennamen. Auf diese Weise wird das Verstehen des Programmcodes und somit das Reverse Engineering extrem erschwert.

Bei kompilierter Software verschleiert der Obfuscator direkt das Kompilat oder eine Kopie des Quellcodes unmittelbar vor dem Kompilierungsvorgang.

So könnte eine Obfuscation aussehen. © ssware.com - So könnte eine Obfuscation aussehen.

IP/Mac-Address-Binding:

Mit dieser Maßnahme wird die Ausführung eines Programms an eine bestimmte IP- bzw. Mac-Adresse gekoppelt. Damit lässt sich die Ausführung Ihrer Software von unautorisierten Geräten aus verhindern.

Domain-Binding:

Hierbei wird die Ausführung nicht an eine IP-Adresse, sondern an eine spezielle Domain gebunden. Ein speziell entwickelte PHP-Script ist somit beispielsweise nur auf Ihrer Domain lauffähig.

Debug-Interruption:

Bei der Debug-Interruption handelt es sich um einen Schutzmechanismus, der häufig bei Software Protection Tools für .Net-Programme eingesetzt wird. Dieser erkennt, wenn durch ein Drittprogramm versucht wird Informationen über die Funktionsweise Ihrer Software zu gewinnen und bringt diesen “Debugging-Vorgang” zum Absturz.

DLL-Corruption:

Der Debug-Interruption recht ähnlich ist die DLL-Corruption. Auch bei dieser handelt es sich um eine, in den Programmcode integrierte Automatik, welche automatische Analyseverfahren erkennt und als Reaktion darauf die jeweiligen Dynamic Link Libraries korrumpieren lässt, sodass eine Analyse nicht mehr möglich ist.

Hardlock:

Beim Hardlock-Schutzmechanismus wird das Programm an ein “Stück Hardware” gekoppelt, beispielsweise einen USB Stick. Ihre Software kann nur dann gestartet werden, wenn der entsprechende USB-Stick mit Ihrem Rechner verbunden ist.

Für wen eignen sich Tools zur Code Protection?

Tools zur Code Protection eignen sich prinzipiell für alle, die um die Sicherheit ihrer Software fürchten. Besonders wichtig ist der Schutz des Source Codes natürlich in größeren Unternehmen, die reichlich Ressourcen in die Entwicklung ihrer Produkte stecken. Wird derartige Software gehackt, ist damit häufig ein erheblicher finanzieller Schaden für das betroffenen Unternehmen verbunden. Achten Sie deshalb darauf Ihr geistiges Eigentum ausreichend zu schützen.

Das kosten Software Protection Tools

Es ist sehr schwierig hier detaillierte Angaben zu machen, da die Preise je nach Anbieter stark variieren. Einfache .Net-Obfuskatoren zum Beispiel sind bereits ab 150€ zu haben. Auf Unternehmen zugeschnittene Komplettlösungen inklusive Hardlock-Systemen sind da - je nach den individuellen Anforderungen - deutlich teurer. Hier hilft es nur, Kontakt mit dem jeweiligen Anbieter aufzunehmen und sich ein Angebot machen zu lassen. Glücklicherweise gibt es die meisten Produkte als Trial-Versionen, sodass Sie sich vorab ein Bild von Ihrer zukünftigen Code Protection Lösung machen können.

So wie SourceGuardian bieten viele Tools eine kostenlose Testversion an. © sourceguardian.com - So wie SourceGuardian bieten viele Tools eine kostenlose Testversion an.

Darauf sollten Sie bei Ihrer Auswahl achten

Die Auswahl eines geeigneten Anbieters ist nicht immer einfach und eine Entscheidung können letztlich nur Sie nach individuellen Kriterien fällen. Grundsätzlich gibt es jedoch einige Fragen, die Sie im Vorfeld für sich beantworten sollten. Folgend finden Sie einige Anreize hierfür:

In welchen Programmiersprachen sind die Produkte, die Sie schützen möchten,, verfasst?

So trivial sie klingen mag, so wichtig ist diese Frage auchSo trivial sie klingen mag, so wichtig ist diese Frage auch. Setzen Sie in Ihrem Unternehmen mehrere Programmiersprachen ein? Dann lohnt sich vielleicht eine komplexere Lösung, die Sie auch für mehrere Sprachen einsetzen können. Liegt der Fokus dagegen auf einer einzigen Programmiersprache, genügt es,, sich auf eine für diese passende Lösung zu konzentrieren.

Wie wichtig ist die Absicherung gegen Missbrauch?

Welche Priorität wird dem Schutz Ihrer Produkte beigemessen? Seien Sie hier wirklich ehrlich und bedenken Sie auch den preislichen Aspekt. In welchem Verhältnis stehen die Kosten für die Schutztools und Ihr erhoffter Gewinn? Welchen Marktanteil nimmt Ihr Produkt bzw. ältere Versionen Ihres Produkts ein? Wenn Sie beispielsweise eine echte Weltneuheit in der Pipeline haben, vergessen Sie nicht,, sich die Idee patentieren zu lassen. So nehmen Sie Konkurrenten schon im Vorfeld den Wind aus den Segeln und diese lassen den Gedanken an ein mögliches Reverse Engineering Ihres Produkts schnell wieder fallen.

Der Markt um Code Protection

Auf dem Markt für Code Protection tummeln sich die unterschiedlichsten Anbieter für unterschiedliche Programmiersprachen. Darunter sehr simple Obfukatoren aber auch komplexere Lösungen, die auf mehrere Sicherheitsmechanismen gleichzeitig setzen. In folgender Übersicht finden Sie die gängigsten Anbieter aufgeführt.

  • JScrambler
  • PreEmptive Protection
  • whiteCryption
  • StarForce Code Protection
  • Chaperon Technology Solutions
  • DeployLX
  • .Net Reactor
  • PHP Encoder
  • Sentinel HASP
  • Crypto Obfuscator

Fazit

Für die Erstellung von Computersoftware bedienen sich Entwickler unterschiedlicher Programmiersprachen. Am Anfang eines jeden Programms steht dabei der Source Code, der das geistige Eigentum des oder der Entwickler repräsentiert. Gerade wenn es darum geht, Ihre Software zu vermarkten, sollten Sie diese entsprechend schützen, um das Risiko eines finanziellen Schadens zu minimieren. Leider liegt es in der Natur eines jeden Programms, das absoluter Schutz nicht realisierbar ist. Mit den hier vorgestellten Tools schaffen Sie es jedoch, das Reverse Engineering Ihrer Programme für den Angreifer so kostspielig zu gestalten, dass dieser lieber selbst kreativ wird und ein eigenes Produkt entwickelt, als sich mit der Analyse Ihrer Software herumzuschlagen.

War dieser Artikel hilfreich?

Oliver Verhovnik

Jetzt Kontakt zum Redakteur aufnehmen!

Sie haben noch mehr Fragen zum Thema und möchten mit jemanden persönlich darüber sprechen? Dann kontaktieren Sie uns einfach! Wir stehen Ihnen unter presse@trusted.de für Ihre Recherchen zur Verfügung. Mehr Infos finden Sie in unserem Pressebereich.

Wir freuen uns von Ihnen zu hören!