
Verschleiert Java-Quellcode, um ihn vor Reverse Engineering, Dekompilierung und Diebstahl geistigen Eigentums zu schützen. Benennt Variablen/Methoden um, verschlüsselt Zeichenketten und verschleiert den Kontrollfluss.
JObfuscator ist ein Quellcode-Verschleierer für die Programmiersprache Java. Er schützt Ihren Java-Quellcode und Ihre Algorithmen vor Hacking, Cracking, Reverse Engineering, Dekompilierung und Technologiediebstahl.
JObfuscator setzt eine Vielzahl von Verschleierungstechniken ein, um die tatsächliche Funktionalität Ihres Java-Quellcodes zu schützen und zu verbergen.
Er benennt alle Variablen und Methoden um, verschleiert den Codefluss, indem er ihn nicht-linear macht, und verschlüsselt alle Zeichenfolgen mit unserer hochmodernen polymorphen String-Verschlüsselungs-Engine.
Weitere technische Details, Downloads und Dokumentation finden Sie unter:
https://www.pelock.com/products/jobfuscator

Er ist für Windows & Linux (erfordert Mono) verfügbar:
https://www.pelock.com/products/jobfuscator/download
Mehrere Programmier-APIs verfügbar:
https://www.pelock.com/products/jobfuscator/api
Eine Online-Verschleierungsschnittstelle:
https://www.pelock.com/jobfuscator/
Anwendungen, die in Java geschrieben und in JAR-, WAR- oder CLASS-Formate kompiliert wurden, sind anfällig für Dekompilierung.
Es gibt eine Reihe von Dekompilern, die den kompilierten Code nahezu vollständig zurück in Java-Quellcode rekonstruieren können.
Das Problem besteht darin, dass der kompilierte Java-Code als sogenannter Bytecode für die JVM geschrieben ist (im Gegensatz zum nativen CPU-Code wie x86 oder x86-64).
Diese Codeform ist nicht nur perfekt dokumentiert, sondern ermöglicht auch eine sehr genaue Rekonstruktion der ursprünglichen Anweisungen in hochwertigem Java-Quellcode.
Werfen Sie einen Blick auf dieses Beispiel:

Das ist dekompilierter Java-Code! Alle Variablen-, Eigenschafts- und Methodennamen sind lesbar. Sie können sogar problemlos durch das gesamte dekompilierte Projekt navigieren und von einer Klasse zur anderen springen.
Überrascht? Das könnte Ihre Software sein, die von der Konkurrenz, Hackern, Crackern oder jedem anderen analysiert wird.
Was könnten sie damit anstellen? Meistens wird die Software oder ihre Algorithmen gestohlen oder in Konkurrenzprodukten nachgebildet.
In anderen Fällen wird die Software gecrackt, deutlich sichtbare Lizenzprüfungen im dekompilierten Quellcode werden gepatcht oder sogar die gesamte gecrackte Software wird neu kompiliert und auf Piraterie-Seiten veröffentlicht.
Verschleierung ist der Prozess der Umwandlung von Java-Quellcode in eine geschützte Version seiner selbst.
Die Funktionalität bleibt unverändert, alles funktioniert weiterhin gleich, aber der Quellcode und der final kompilierte Bytecode sind vor Reverse-Engineering-Analysen geschützt, selbst nach der Dekompilierung.
import java.util.; import java.lang.; import java.io.*;
// // you must include a custom annotation // to enable the entire class or a single // method obfuscation // @Obfuscate class Ideone { //@Obfuscate public static double calculateSD(double numArray[]) { double sum = 0.0, standardDeviation = 0.0; int length = numArray.length;
for(double num : numArray) {
sum += num;
}
double mean = sum/length;
for(double num: numArray) {
standardDeviation += Math.pow(num - mean, 2);
}
return Math.sqrt(standardDeviation/length);
}
//
// selective obfuscation strategies
// can be applied for the entire
// class or a single method (by
// default all obfuscation strategies
// are enabled when you use @Obfuscate
// annotation alone)
//
//@Obfuscate(
// array_int_crypt = true,
// array_char_crypt = true,
// array_double_crypt = true,
// array_string_crypt = true,
// split_strings = true,
// crypt_strings = true,
// rename_methods = false,
// shuffle_methods = true,
// ints_math_crypt = true,
// dbls_math_crypt = true,
// rename_variables = true,
// mix_code_flow = true,
// string_char_vault = true,
// ints_from_double_math = true,
// opaque_mixer_chain = true,
// complexify_booleans = true,
// try_finally_noise = true,
// ints_to_arrays = true,
// dbls_to_arrays = true
// )
public static void main(String[] args) {
double[] numArray = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
double SD = calculateSD(numArray);
System.out.format("Standard Deviation = %.6f", SD);
}
}
### Derselbe Java-Quellcode nach der Verschleierung```java
////////////////////////////////////////////////////////////////////////////////
//
// An output from JObfuscator v1.30 - Bartosz Wójcik
//
// Website : https://www.pelock.com/products/jobfuscator
// Version : v1.30
// Params : /MixCodeFlow /RenMethods /RenVars /ShuffleMethods /ArrayIntCrypt
// /ArrayDoubleCrypt /ArrayCharCrypt /ArrayStringCrypt
// /IntsMathCrypt /DblsMathCrypt /StringSplit /CryptStr
// /StringCharVault /IntsFromDoubleMath /OpaqueMixerChain
// /ComplexifyBooleans /TryFinallyNoise /IntsToArray /DblsToArray
// New lines : Windows (CRLF - \r\n)
// Date : 12.05.2026
//
////////////////////////////////////////////////////////////////////////////////
import java.util.*;
import java.lang.*;
import java.io.*;
import java.lang.Math.*;
class Ideone {