Java Code schützen - Key4J

Status
Nicht offen für weitere Antworten.

crazy_N

Mitglied
Vor einiger Zeit fragte ich mal im Chat, ob es möglich ist, seine Klassen vor dem decompilieren zu schützen. Wir kamen überein, dass sogenannte Obfuscatoren die einzige Möglichkeit wäre, den Code einigermaßen zu schützen. Dabei werden Variablennamen und Methodenamen durch kryptische Bezeichnungen ersetzt, was das Lesen erschwert. Jedoch können moderne Entwicklungsumgebungen mittels Refactoring einen großen Teil dieser Verschleierung wieder rückgängig machen.

Die Firma Step2e entwickelte ein neues Produkt zur Verschlüsselung von Java Klassen. mit der das dekompilieren nicht möglich ist. Hier ein Auszug aus der Herstellerseite:
Code:
Das Grundproblem

Die Programmiersprache Java erfreut sich seit einigen Jahren immer größer werdender Beliebtheit.
Neben klassischer Client-Programmierung bietet Java vor allem im Bereich verteilter oder
serverbasierter Systeme eine umfassende Lösung für moderne e-Business Anwendungen. Java
Software ist plattformunabhängig, d.h. ein und dasselbe Programm kann sowohl unter Windows,
als auch unter Unix / Linux oder MacOS Betriebssystemen eingesetzt werden. Dies wird dadurch
erreicht, dass eine plattformabhängige sog. Virtuelle Maschine auf dem Zielsystem installiert wird,
in der die eigentlichen Java-Programme dann ablaufen.
Hieraus ergeben sich allerdings zahlreiche Probleme, vor allem im Bereich „Security“. Java-
Quelltext wird in den sog. Bytecode kompiliert und dieser in einer Virtuellen Maschine (JVM)
ausgeführt. Da die Schnittstelle der JVM offen gelegt ist, können Java-Klassen sehr einfach wieder
in den ursprünglichen Quelltext zurück transformiert werden (Decompiler). Dadurch werden alle
eingesetzten Algorithmen, Klassen und Methoden offen zugänglich, die Software damit nicht
schützbar.

Die Lösung

Wibu-Key bietet hervorragende Verschlüsselungsmöglichkeiten. Key4J nutzt diese um Java-Klassen
zu schützen. Eine verschlüsselte Java-Klasse kann von keinem Decompiler „geknackt“ werden und
bietet somit optimalen Schutz für die darin enthaltenen Informationen. Die gewünschten Klassen
werden im „Key4J-Admin“ ausgewählt und anschließend verschlüsselt wieder in die ursprüngliche
Verzeichnishierarchie oder jar-Archive geschrieben. Für die Integration in
Entwicklungsumgebungen wie z.B. Eclipse oder Together kann Key4J auch als Ant-Task aufgerufen
werden.
Beim Ausführen des Programms sorgt der „Key4J-Classloader“ dafür, dass die gesicherten
Informationen ausschließlich im Hauptspeicher des Rechners unverschlüsselt vorliegen. Die
spezielle „Key4J-Security Architecture“ bemerkt sowohl den Austausch als auch Manipulationen des
Original-Classloaders der JVM und führt somit zum derzeit sichersten Schutz für Java-Software.

Performance

Key4J verwendet die indirekte Verschlüsselung von Wibu-Key. Hierbei wird zu Beginn ein
Referenzwert generiert, mit dem dann im Hauptspeicher der komplette Entschlüsselungsprozess
stattfindet. Die Kommuikation mit Wibu-Key wird somit auf ein Minimum reduziert, die
Performance bleibt im Vergleich zur unverschlüsselten Anwendung nahezu unverändert.

Einsatz

Key4J kann eingesetzt werden, ohne bestehende Anwendungen modifizieren zu müssen.
Im „Key4J Admin“ wählen Sie die zu verschlüsselnden Klassen. Diese können nach der
Verschlüsselung wie normale Java-Klassen behandelt und z.B. in jar-Archive gepackt
werden. Eine verschlüsselte Anwendung kann ohne Modifikation der Quelltexte wie folgt
aufgerufen werden:
java –classpath %CLASSPATH%;WkJavaApi.jar de.step2e.key4j.Key4JWrapper
Main_Class Arg0 Arg1...
Hierbei ist Main_Class Ihre Original-Java Anwendung und Arg0, Arg1, ... die von Ihnen
benötigten Parameter.

key4J_architektur.jpg


Quelle: http://www.step2e.de/
 

Isaac

Bekanntes Mitglied
Für den "normalen" Nutzer mag das genügen aber wenn ich da ran will komme ich auch ran und wenn ich einfach den Speicher auslese und das Programm so extrahiere. Ich sehe keinen Grund meine Sourcen extra zu schützen. Der Aufwand gegen Kriminelle Energie ist meist exponentiell zu dem Aufwand den man braucht um den Schutz zu umgehen.
 

L-ectron-X

Gesperrter Benutzer
Isaac, nun mach doch nicht immer alles gleich schlecht.
Lehnen wir uns zurück und warten wir's erst mal ab. :wink:
 

Grizzly

Top Contributor
Dies wird auch von der Firma Wibu angeboten. Die haben uns das auf der letzten Linux Tag Messe in Karlsruhe vorgeführt. Ist ganz interessant.
 

thE_29

Top Contributor
Da finde ich endlich diesen Thread und dann gibts dieses Produkt scheinbar nicht mehr?!
 

foobar

Top Contributor
thE_29 hat gesagt.:
Da finde ich endlich diesen Thread und dann gibts dieses Produkt scheinbar nicht mehr?!

Klingt alles sehr interessant, aber anscheinend gibt es das Produkt wirklich nicht mehr. Kennt jemand etwas vergleichbares?
 
G

Guest

Gast
Naja dann hab ich im endeffekt mein java programm in ein c++ programm konvertiert und das dann "verschlüsselt". Da kann ich auch c++ proggen :) und das dann verschlüsseln. Obwohl das könnte ich ja dann wieder in java konvertieren un d das dann verschlüsseln .....
:autsch:
 
G

Guest

Gast
Anonymous hat gesagt.:
Naja dann hab ich im endeffekt mein java programm in ein c++ programm konvertiert und das dann "verschlüsselt". Da kann ich auch c++ proggen :) und das dann verschlüsseln. Obwohl das könnte ich ja dann wieder in java konvertieren un d das dann verschlüsseln .....
:autsch:

Hm, so einfach scheint es dann ja nicht zu sein. Wenn ich das richtig verstanden habe, dann benutzen die einen für die Zielplattform kompilierten Launcher, welcher die Entschlüsselung übernimmt und die Daten dann an die VM übergibt. Wenn man der FAQ glauben darf, dann scheinen Sie auch noch ein paar Klimzüge zu betreiben, damit man nicht ohne weiteres an die Klassendaten kommt.

:idea:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Java Code schützen? Allgemeine Java-Themen 19
D VBA Code mit Java ausführen möglich? Allgemeine Java-Themen 10
N JAVA-Code mit Grafikfenster zeichnet in Windows, aber nicht Mac. Allgemeine Java-Themen 4
JordenJost Unverständlicher Java code? Allgemeine Java-Themen 21
V Hilfe mit Java Code Allgemeine Java-Themen 4
S Processing Java Code verstehen Allgemeine Java-Themen 4
N Regulären Ausdruck in normalen Java-Code umwandeln Allgemeine Java-Themen 12
AGW in Java-Code plötzlich ein paar Wörter in Rot Allgemeine Java-Themen 2
T Java-Quiz Code Fehler Allgemeine Java-Themen 10
L Eclipse Java Code ausführen Allgemeine Java-Themen 18
F Java Code ausführen direkt nach Anmelden in Windows Allgemeine Java-Themen 2
S Gibt es eigentlich Java Source Code Interpreter..? Allgemeine Java-Themen 13
I Python Code in Java Code Allgemeine Java-Themen 9
M Java (GUI) Code verdoppeln oder anzeige mehrmals anzeigen? Allgemeine Java-Themen 8
F Verständlichkeitsproblem bei Java Code?! Allgemeine Java-Themen 2
P Java Android Code in IOS compilieren? Allgemeine Java-Themen 9
R Java-Code für folgene Aufgabe? Allgemeine Java-Themen 8
C ASCII-Code in Java Allgemeine Java-Themen 1
J Java-Code in DLL packen Allgemeine Java-Themen 5
B JAVA - mehrere Clienten gleichzeitig starten. Nicht bei Code! Allgemeine Java-Themen 3
J Java code "plugin" fähig machen Allgemeine Java-Themen 4
D Java Compiler code referencen Allgemeine Java-Themen 0
B Fehler im Java-Code Allgemeine Java-Themen 4
A PHP-Code zu Java-Code Allgemeine Java-Themen 5
H Java Leistungssteigerung durch Code Anpassung Allgemeine Java-Themen 5
J Erzeugung von Java-Code Allgemeine Java-Themen 2
N VB Code in Java verwenden Allgemeine Java-Themen 5
L php code in java ausführbar? Allgemeine Java-Themen 6
D Fehler im Java Code Allgemeine Java-Themen 22
Gossi Java Code in einer GUI eingeben und ausführen? Allgemeine Java-Themen 2
P JAVA Code in Dokumentation erklären Allgemeine Java-Themen 2
B Verwendung von Packages im Java Code Allgemeine Java-Themen 10
A Jars oder JNLPs aus java code in gleicher JVM starten Allgemeine Java-Themen 2
S String to Java-Code Allgemeine Java-Themen 3
S java source code Allgemeine Java-Themen 5
G Java Programm mit Freischalt code entwickeln Allgemeine Java-Themen 30
K Test-Code in Java-Klassen verstecken (wie mit Precompiler möglich) Allgemeine Java-Themen 10
martin82 Java-Code aus Text-Datei parsen Allgemeine Java-Themen 3
P [erledigt] Java-Code in Ausarbeitung dokumentieren Allgemeine Java-Themen 2
K UML Komposition in Java Code Allgemeine Java-Themen 4
hdi Source Code von Sun's Java Klassen Allgemeine Java-Themen 11
T .jar Datei aus Java Code starten Allgemeine Java-Themen 10
Chris81T JNI: Java Methoden von C++ Code aufrufen Allgemeine Java-Themen 8
J YAML + Java: Simpler Code funktioniert nur unter Windows Allgemeine Java-Themen 2
C Listen in Java. Anehängter Code nicht ganz klar Allgemeine Java-Themen 19
S java source code Allgemeine Java-Themen 7
I ASCII Code in Java Allgemeine Java-Themen 3
K Java-Code messen Allgemeine Java-Themen 15
R bestimmten HTML Code per JAva lesen lassen Allgemeine Java-Themen 7
S Java Code in Word Allgemeine Java-Themen 8
leifg komischer Java code Allgemeine Java-Themen 4
I Alter Java Code! Allgemeine Java-Themen 8
D Java Code to Flussdiagramm Allgemeine Java-Themen 8
G Java Code in Programm umwandeln? Allgemeine Java-Themen 12
M pdf maker via java code ansprechen Allgemeine Java-Themen 2
M Code von Java-Klassen in Eclipse Allgemeine Java-Themen 4
G c code übersetzen nach java Allgemeine Java-Themen 2
Reeny JNI - Java-Code mit DELPHI verbinden Allgemeine Java-Themen 2
G Mit Java 1.5 zu 1.4 kompatiblen Code erzeugen Allgemeine Java-Themen 5
C Java Native binding Code will nicht so ganz Allgemeine Java-Themen 2
G C++ Code nach Java übersetzen Allgemeine Java-Themen 14
S Java Assembly Code Allgemeine Java-Themen 13
D Hat Java eine Library um JavaScript auszuwerten? Allgemeine Java-Themen 2
Zrebna Wieso sind eigentlich JUnit-Tests in src/test/java platziert - nur Konvention? Allgemeine Java-Themen 7
N LlaMA, KI, java-llama.cpp Allgemeine Java-Themen 39
V Java-Codierungsherausforderung: Navigieren durch die Macken der Datumsmanipulation Allgemeine Java-Themen 2
E Output Fehler (Java-Programm Kuchen) Allgemeine Java-Themen 11
M java: unexpected type Allgemeine Java-Themen 2
harrytut Java Input/Output Tests Junit Allgemeine Java-Themen 3
B Java Discord bot auf ein Root Server? Allgemeine Java-Themen 1
BetziTheRealOne Java PKIX path building failed as non Admin Allgemeine Java-Themen 15
D Linux, Java-Version wird nicht erkannt bzw. welche Einstellung fehlt noch? Allgemeine Java-Themen 19
KonradN Java 21 Release Allgemeine Java-Themen 5
V Umgang mit fehlenden Daten in einer Java-Datenanalyseanwendung Allgemeine Java-Themen 5
P Fehler: Hauptklasse Main konnte nicht gefunden oder geladen werden Ursache: java.lang.ClassNotFoundException: Main Allgemeine Java-Themen 24
K Java Anwendung machen Anleitung Allgemeine Java-Themen 5
G java.io.listFiles() Allgemeine Java-Themen 3
8u3631984 Frage zu Java Streams min / max Allgemeine Java-Themen 17
S Java Programm lässt sich vom USB-Stick starten, aber nicht von HDD Allgemeine Java-Themen 16
K Java-Projekt Allgemeine Java-Themen 11
K Java-Projekt Allgemeine Java-Themen 0
ruutaiokwu Welcher Browser unterstützt heutzutage noch Java Applets? Allgemeine Java-Themen 5
Jose05 Java-Klasse im extra cmd-Fenster ausführen Allgemeine Java-Themen 3
rode45e Java Threads Allgemeine Java-Themen 4
G java.io.listFiles() Allgemeine Java-Themen 2
N Java Dynamic Proxy Allgemeine Java-Themen 3
N Leichte Java Gegner Ki Allgemeine Java-Themen 10
A Java modul Problem Allgemeine Java-Themen 4
Thomasneuling Java Jar datei erstellen, von Projekt, dass auch Javafx Dateien, FXML Dateien und CSS Dateien, sowie Bilder enthält? Allgemeine Java-Themen 14
V Funktionale Schnittstelle in Java Allgemeine Java-Themen 3
OnDemand Java String in Hashmap als Key NULL Allgemeine Java-Themen 27
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
berserkerdq2 Wenn ich bei Intelij javafx mit maven importieren will, muss ich das in die pom.xml reintun, aber warum noch in module-info.java? Allgemeine Java-Themen 3
KonradN Java 20 am 21. März Allgemeine Java-Themen 1
O Java Website Stock Bot Allgemeine Java-Themen 3
J Front-/Backend in Java Allgemeine Java-Themen 14
doopexxx JAVA Google Webcrawler Allgemeine Java-Themen 1
J JavaScript innerhalb eines Java Projekts ausführen Allgemeine Java-Themen 2
A Java Programm erstellen hilfe Allgemeine Java-Themen 10
G java.lang.NoClassDefFoundError: org/aspectj/lang/Signature Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben