Code verschlüsseln

Status
Nicht offen für weitere Antworten.

zilti

Bekanntes Mitglied
Ist es möglich, Code zu verschlüsseln nach dem Compilieren, damit er auch mit einem Decompiler nicht mehr einsehbar, aber trotzdem noch verwendbar ist?
 
G

Guest

Gast
Yepp, geht. Dazu brauchst du einen so genannten "Obfuscator".
 

Tobias

Top Contributor
Dann ist er immer noch mit dem Decompiler einsehbar, aber deutlich schwerer zu lesen.

mpG
Tobias
 

Backwardsman

Bekanntes Mitglied
ein obfuscator ist nicht dafür gedacht, den code zu verschlüsseln. eigentlich wird er dazu benutzt, den code zu verkleinern, in dem variablen auf einzelne buchstaben abgebildet werden etc... ein vorteil dabei ist allerdings, dass menschen den code nach anwendung eines obfuscators wesentlich schwerer verstehen können, ... was aber keine verschlüsselung ist!

wenn du den code verschlüsseln willst, brauchst du einen schlüssel, und dann hat man das alte problem der schlüssel-verwaltung... wo soll denn der schlüssel aufbewahrt werden... so dass der code kurz vor der anwendung entschlüsselt werden kann??
 
B

Bernd das Brot

Gast
Sorry, Backwardsman. Das ist falsch.

s.a. Leo-Dict für "to obfuscate".

zum Topic:
Es ist in Java leider grundsätzlich nicht vorgesehen, Klassen zu verschlüsseln. Aber man könnte darüber nachdenken, einen eigenen Classloader zu schreiben, welcher die aus den JAR- oder .class-Dateien gelesenen Daten erst decoded und danach an den superclassloader zwecks Instantiierung weiter gibt.

Dazu muss man das Laden seiner Hauptklasse mit diesem Classloader erzwingen, denn Java verwendet immer den Classloader der aktuellen Klasse, wenn er weitere Klassen nachladen muss und delegiert bei Mißerfolg an den Parent-Classloader (in Application-Servern gilt das wg. Hot-Deployment nicht immer. S.a. parent delegation modell).
Allerdings habe ich das auch schon mal probiert und festgestellt, daß das ein mühseliges Geschäft ist. Da muss man sehr genau über die Art, wie Java Classes nachläd, bescheid wissen!

Eine andere Möglichkeit sind die angesprochenen Obfuscater, die allerdings bei Reflection-Code versagen können und auch sonst nicht in allen Situationen funktionieren müssen und mit Vorsicht anzuwenden sind! Immerhin erzeugen sie neuen Quellcode, bei dem z.B. die Klassennamen je Paket mit A, B, C durchnummeriert werden - gleiches mit Variablen und Methoden.

So in etwa:
Code:
package x.y.w;

import x.y.z.A;

Class A
{
   public int a;
   public void a()
   {
      a=5;
      x.y.z.A.a(a);
   }
}

Dann noch ein Compile ohne Debug-Information und hinterher kann das keiner mehr so richtig lesen. Aber wer sich viel Mühe gibt, kann auch da noch was ausrichten - also nicht wirklich ein Schutz vor Hackern - außer vor "Algorithmus-Dieben"...
 

Backwardsman

Bekanntes Mitglied
Bernd das Brot hat gesagt.:
Sorry, Backwardsman. Das ist falsch.

s.a. Leo-Dict für "to obfuscate".
wenn du schon behauptest, dass meine aussage falsch ist, dann erkläre gefälligst auch warum!!

"to obfuscate" heißt "verbergen"/"trüben" und genau, dass macht der obfuscator ja auch... mit einer verschlüsselung möchte man allerdings erreichen, dass der code nicht mehr lesbar ist! und das schafft der obfuscator nicht... es gibt ja wohl einen gewaltigen unterschied, zwischen "getrübt" und "nicht lesebar"... aus etwas getrübten kann man durchaus information erlangen... aus etwas veschlüsseltem nicht!!! (zumindest wenn es nach dem prinzip der verschlüsselung geht)

das fängt ja schon damit an, dass alle hartcodierten Strings im code vom obfuscator unberührt bleiben... ich kann also den code schon in soweit manipulieren, dass ich ihn decompile, die strings ändere und wieder kompiliere! bei verschlüsseltem code geht das nicht!
 

NTB

Bekanntes Mitglied
Davon ganz abgesehen sagt doch die wörtliche englisch-deutsche Übersetzung nichts darüber aus, was ein Obfuscator nun tatsächlich macht. Dennoch hat Backwardsman das sehr trefflich beschrieben.
 
G

Guest

Gast
Bernd das Brot hat gesagt.:
Aber man könnte darüber nachdenken, einen eigenen Classloader zu schreiben, welcher die aus den JAR- oder .class-Dateien gelesenen Daten erst decoded und danach an den superclassloader zwecks Instantiierung weiter gibt.

Da ist dann allerdings auch recht leicht einzusetzen und die entschlüsselte Klasse zubekommen.
 

zilti

Bekanntes Mitglied
Nun ja, das paradoxe ist ja, dass ich das genau dazu bräuchte.
Ich hab ne Lobby geschrieben, nun hätte ich die OpenSource machen wollen.
Da die Lobby jedoch auf einen MySQL-Server connected, stehen die MySQL-Logindaten im Quelltext. Nun dachte ich, ich könnte das verschlüsseln.
 

Wildcard

Top Contributor
Wenn du ein Programm auslieferst, das alle benötigten Daten zum Verbinden besitzt, dann darf dich nicht stören, das User diese Daten einsehen können.
 

zilti

Bekanntes Mitglied
Gibt es denn Alternativen dazu, sich mit ner MySQL-Datenbank zu verbinden?
EDIT: Sorry, da ist wohl beim Posten was schiefgelaufen...
 
G

Gast

Gast
du verbindest dich zu einem programm auf deinem server und das verbindet sich zu der DB.

Also z.B. ein kleines php script.
 

Rock Lobster

Bekanntes Mitglied
Ich glaube, was Bernd bzgl. Backwardsmans Posting meinte, ist dieses hier:

eigentlich wird er dazu benutzt, den code zu verkleinern

Das ist nämlich nicht das gewünschte Ziel des Obfuscators. Sondern es geht um das, wie er später gesagt hat, "trüben" des Codes. Und nicht um das Kleinermachen (auch wenn das effektiv vielleicht passiert).
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Unsicher, ob das Code richtig ist Allgemeine Java-Themen 4
MarvinsDepression Unbekanntes Zeichen in fremden Code wirft Fragen auf Allgemeine Java-Themen 4
schemil053 Methoden Code-Verbesserung Allgemeine Java-Themen 2
D Webarchive (war): Code verschleiern Allgemeine Java-Themen 7
D Compiler-Fehler child process exited with code 1 Allgemeine Java-Themen 1
Queenman Interface Mein Microsoft Visual Studio Code zeigt komische Dinge & Menüs an Allgemeine Java-Themen 9
A Clean Code: Variable vs. Methode Allgemeine Java-Themen 8
berserkerdq2 Versteht jemand, was diese beiden Zahlen bei dem IJVM Code zu bedeuten haben? Allgemeine Java-Themen 10
OnDemand Releaseversion Tag in Code Allgemeine Java-Themen 5
ERlK JDA Code funktioniert nicht? Allgemeine Java-Themen 4
F Code auslagern Allgemeine Java-Themen 5
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
A code wird nicht ausgeführt Allgemeine Java-Themen 3
B Bitte um Code Erklärung Allgemeine Java-Themen 5
N nicht einsehbarer Fehler im code, kann nicht mehr übersetzten Allgemeine Java-Themen 51
N Regulären Ausdruck in normalen Java-Code umwandeln Allgemeine Java-Themen 12
OnDemand Clean Code oder Allgemeine Java-Themen 5
Noahscript Aus einem byte Array Steuerungszeichen und Code bekommen und ersetzen Allgemeine Java-Themen 3
J Simple Date Format Alternativen bitte um Code Allgemeine Java-Themen 14
AGW in Java-Code plötzlich ein paar Wörter in Rot Allgemeine Java-Themen 2
L Best Practice Auslagerung von Code = Performance Optimierung? Allgemeine Java-Themen 4
H Precompilierten code ansehen Allgemeine Java-Themen 3
R Wo müsste ich im Code eine Änderung vornehmen? Allgemeine Java-Themen 6
L Ausgabe von in Echtzeit ausgeführten Code Allgemeine Java-Themen 9
Drachenbauer Wie kann ich die menge an code reduzieren? Allgemeine Java-Themen 28
Thallius Warum ist dieser Code OS abhängig? Allgemeine Java-Themen 10
S Code Erklärung Allgemeine Java-Themen 21
B Pausem im Code 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
F Code in Klassen bringen Allgemeine Java-Themen 4
S Gibt es eigentlich Java Source Code Interpreter..? Allgemeine Java-Themen 13
J JUnit - Auslassen von Code Allgemeine Java-Themen 25
F Klassen Spaghetti Code Vermeidung Allgemeine Java-Themen 16
C code oder Bibliotheken für 2-Center Problem Allgemeine Java-Themen 4
J Code Page characters darstellen Allgemeine Java-Themen 12
J wie sollte man sinnvoll seinen Code aufteilen Allgemeine Java-Themen 6
I Python Code in Java Code Allgemeine Java-Themen 9
M Java (GUI) Code verdoppeln oder anzeige mehrmals anzeigen? Allgemeine Java-Themen 8
N Wie öffne ich einen runtergeladadenen Code in IntelliJ Allgemeine Java-Themen 3
R Fehler im Code Allgemeine Java-Themen 1
R Fehler im Code Allgemeine Java-Themen 3
O Standard library nativer C code Allgemeine Java-Themen 1
R Wo ist mein Fehler in diesem Code Allgemeine Java-Themen 7
S Java Editor Bekomme bei der Code-Vervollständigung die Zeichen ​ Allgemeine Java-Themen 3
N Morse Code decoder Allgemeine Java-Themen 9
O Erste Schritte Benzinverbrauch Code Hilfe Allgemeine Java-Themen 3
S Eclipse exit code 805306369 Allgemeine Java-Themen 1
Pataraca Vererbung Code einbinden Allgemeine Java-Themen 3
Developer_X Website HTML Code von HTTPS URL laden Allgemeine Java-Themen 0
S Wie kann ich eine kleine Stelle in meinem Code mit multiplen Threads abarbeiten..? Allgemeine Java-Themen 20
S Code 'innerhalb' des synchronen Bereichs einer BlockingQueue ausfuehren..? Allgemeine Java-Themen 7
F Verständlichkeitsproblem bei Java Code?! Allgemeine Java-Themen 2
G Eclipse Eclipse: Unreachable code Allgemeine Java-Themen 16
P Java Android Code in IOS compilieren? Allgemeine Java-Themen 9
C Code vereinfachen Allgemeine Java-Themen 2
T Hilfe bei Code Allgemeine Java-Themen 3
R Java-Code für folgene Aufgabe? Allgemeine Java-Themen 8
Prafy Best Practice Code Refaktorisierung Allgemeine Java-Themen 7
WetWer Was bedeutet/macht ein Exit-Code Allgemeine Java-Themen 1
D Code für bereitgestellte Methoden Allgemeine Java-Themen 1
perlenfischer1984 HTML Code decodieren Allgemeine Java-Themen 2
C ASCII-Code in Java Allgemeine Java-Themen 1
J Java-Code in DLL packen Allgemeine Java-Themen 5
J LWJGL 3 Error Code 1282 Allgemeine Java-Themen 4
0 Code startet nicht (Keine Warnung/Fehlermeldung) Allgemeine Java-Themen 4
A Frage zu meinem Code Allgemeine Java-Themen 2
B Code generierung Velocity Templates Telosys Allgemeine Java-Themen 1
E Fehlermeldung vor dem Programm code Allgemeine Java-Themen 1
B JAVA - mehrere Clienten gleichzeitig starten. Nicht bei Code! Allgemeine Java-Themen 3
Fischkralle Ausführen von fremden Code Allgemeine Java-Themen 14
wolfgang63 Code snipped Software Allgemeine Java-Themen 1
L Eclipse Editieren des Code templates für Override methods Allgemeine Java-Themen 2
J Java code "plugin" fähig machen Allgemeine Java-Themen 4
alderwaran .jar Code Signing, User-Keystore und Fragen dazu Allgemeine Java-Themen 0
Thallius Wie verstecke ich meinen private Key am besten im Code? Allgemeine Java-Themen 10
A Thread: Code paralell ausführen in mehreren Instanzen Allgemeine Java-Themen 1
B NullPointerException - Aber kein Fehler im Code Allgemeine Java-Themen 4
N HTTP response code: 403 Allgemeine Java-Themen 3
D Code bitte mit 19 stelligen Zahlen kompatibel machen Allgemeine Java-Themen 5
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
M Code läuft unter windows aber nicht unter Linux Allgemeine Java-Themen 6
X Was macht folgender Code!? Allgemeine Java-Themen 6
K Code zu einem Projekt entschluesseln Allgemeine Java-Themen 15
H Java Leistungssteigerung durch Code Anpassung Allgemeine Java-Themen 5
Fab1 Best Practice Vorgehensweise bestehenden Code/Programm verschönern Allgemeine Java-Themen 4
M Code optimieren Allgemeine Java-Themen 7
A jEditorPane Html Datei öffnen (code) Allgemeine Java-Themen 3
S EAN-Code Tabelle für CD's Allgemeine Java-Themen 2
T Code durch eigenes Frame pausieren (ähnlich JDialog) Allgemeine Java-Themen 4
J Erzeugung von Java-Code Allgemeine Java-Themen 2
A Source code analyze Allgemeine Java-Themen 8
N VB Code in Java verwenden Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben