
Запутывает исходный код Java для защиты от реверс-инжиниринга, декомпиляции и кражи интеллектуальной собственности. Переименовывает переменные/методы, шифрует строки и запутывает поток управления.
JObfuscator — это обфускатор исходного кода для языка программирования Java. Он защищает ваш исходный код Java и алгоритмы от взлома, крэкинга, реверс-инжиниринга, декомпиляции и кражи технологий.
JObfuscator использует множество методов обфускации для защиты и сокрытия истинной функциональности вашего исходного кода Java.
Он переименовывает все переменные и методы, обфусцирует поток выполнения кода, делая его нелинейным, и шифрует все строки с помощью нашего передового полиморфного движка шифрования строк.
Более подробные технические сведения, загрузки и документация доступны по адресу:
https://www.pelock.com/products/jobfuscator

Доступен для Windows и Linux (требуется Mono):
https://www.pelock.com/products/jobfuscator/download
Доступно несколько программных API:
https://www.pelock.com/products/jobfuscator/api
Онлайн-интерфейс обфускатора:
https://www.pelock.com/jobfuscator/
Приложения, написанные на Java и скомпилированные в форматы JAR, WAR или CLASS, уязвимы для декомпиляции.
Существует ряд декомпиляторов, которые могут почти полностью восстановить скомпилированный код обратно в исходный код Java.
Проблема в том, что скомпилированный код Java записывается в виде так называемого байткода для JVM (в отличие от нативного кода процессора, такого как x86 или x86-64).
Помимо того, что эта форма кода прекрасно документирована, она позволяет очень точно воспроизводить исходные инструкции в высокоуровневом исходном коде Java.
Взгляните на этот пример:

Это декомпилированный код Java! Все имена переменных, свойств и методов читаемы. Вы даже можете легко перемещаться по всему декомпилированному проекту, переходя от одного класса к другому.
Удивлены? Это может быть ваше программное обеспечение, проанализированное конкурентами, хакерами, крэкерами или кем-либо ещё.
Что они могут с ним сделать? В большинстве случаев программное обеспечение или его алгоритмы похищаются или копируются в конкурирующих продуктах.
В других случаях программное обеспечение взламывается: явно видимые проверки лицензий в декомпилированном исходном коде пропатчиваются, или даже всё взломанное программное обеспечение перекомпилируется и публикуется на пиратских сайтах.
Обфускация — это процесс преобразования исходного кода Java в защищённую версию самого себя.
Функциональность остаётся неизменной, всё работает так же, но исходный код и итоговый скомпилированный байткод защищены от анализа методом реверс-инжиниринга, даже после декомпиляции.
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);
}
}
### Тот же исходный код Java после обфускации```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 {