Деобфускатор Java и помощник декомпилятора
Обнаруживайте и декодируйте обфусцированные шаблоны в исходном коде Java. Инструмент выявляет последовательности Unicode-экранирования, hex-кодирование строк, обфусцированные числовые литералы, строки в кодировке Base64 и конкатенацию массивов символов. Показывает каждое обнаружение с закодированными и декодированными значениями рядом, оценками уверенности и контекстом исходника. Бесплатно, конфиденциально и без регистрации.
Detect and decode obfuscated patterns in Java source code. Identifies Unicode escapes, hex string encodings, obfuscated numeric literals, Base64 encoded strings, and char array concatenation. Shows encoded and decoded values side by side with detection confidence.
Paste Java code above and click Analyze Java Code to detect and decode obfuscated patterns. The tool identifies Unicode escapes, hex string encodings, obfuscated numeric literals, Base64 strings, and char array concatenation. Try loading an example to see how it works!
Возможности
- 5 детекторов шаблонов обфускации: автоматически обнаруживает последовательности Unicode-экранирования (\\uXXXX), декодирование hex-строк, обфусцированные числовые литералы (шестнадцатеричные, восьмеричные, двоичные), строки в кодировке Base64 и конкатенацию массивов символов. Каждый метод использует собственный специализированный движок обнаружения с сопоставлением шаблонов по regex и эвристике.
- Просмотр закодированного и декодированного рядом: каждое обнаруженное обфусцирование показывает исходное закодированное значение рядом с декодированным результатом. Закодированные значения отображаются моноширинным шрифтом со статистикой длины, а декодированные значения визуально выделяются для быстрого просмотра и сравнения.
- Распаковка обфусцированных чисел: обнаруживает и декодирует обфусцированные числовые литералы, включая шестнадцатеричные (0xFF), восьмеричные (0377), двоичные (0b11111111) и выражения, замаскированные битовыми операциями. Показывает исходное числовое значение рядом с его обфусцированным представлением и полным контекстом.
- Локальная приватность в браузере: вся обработка деобфускации Java выполняется полностью в вашем браузере. Ваш исходный код Java, обнаруженные шаблоны обфускации и декодированные значения никогда не покидают устройство. Никаких загрузок на сервер, сбора данных или вызовов API.
Что такое обфускация Java?
Обфускация Java преобразует байт-код или исходный код Java, чтобы значительно затруднить обратную разработку, сохраняя функциональность. В отличие от скомпилированных C++ или Rust, байт-код Java сохраняет богатые метаданные, включая имена классов, сигнатуры методов, записи пула констант и таблицы номеров строк — всё это можно использовать для реверс-инжиниринга. Распространённые техники обфускации включают Unicode-экранирования (\u0048 вместо "H"), hex-строки (байтовые массивы из hex-литералов), обфусцированные числа (шестнадцатеричные, восьмеричные, двоичные, битовые выражения), кодирование Base64 и конкатенацию массивов символов (сборка строк из отдельных символов). Понимание этих техник — первый шаг к эффективной деобфускации кода Java.
Как работает наш деобфускатор Java
Деобфускатор сканирует исходный код Java с помощью специализированных детекторов шаблонов для каждой известной техники обфускации. Для Unicode-экранирований он извлекает последовательности \uXXXX и преобразует их в соответствующие символы Unicode с помощью String.fromCodePoint(). Для hex-строк он обнаруживает пары hex-цифр и строки в кодировке Base64 внутри строковых литералов и преобразует их в читаемый текст. Для обфусцированных чисел он определяет шестнадцатеричные (0x), восьмеричные (с префиксом 0) и двоичные (0b) литералы и вычисляет их десятичные эквиваленты. Для массивов символов он находит последовательные инициализации массивов символов и шаблоны конкатенации, собирая символы для восстановления скрытых строк. Каждое обнаружение включает окружающий контекст исходника и номера строк.
Особенности деобфускации Java
Обфускация Java имеет несколько уникальных особенностей. Unicode-экранирования обрабатываются на этапе лексера Java — ещё до того, как компилятор увидит код, — то есть \u0048 на уровне исходника эквивалентно 'H'. Hex-строки в Java часто выглядят как new String(byte[]) или похожие конструкции. Обфусцированные числа в Java используют префикс 0x для шестнадцатеричных, ведущий ноль для восьмеричных и 0b для двоичных. ProGuard, самый распространённый обфускатор Java, в первую очередь переименовывает классы, методы и поля, но также поддерживает шифрование строк через сторонние плагины, такие как Stringer или DexGuard. Деобфусцированный вывод помогает понять, как выглядел бы код до применения обфускации.
Конфиденциальность и безопасность
Этот инструмент работает полностью в вашем браузере. Ваш исходный код Java, обнаруженные шаблоны обфускации и декодированные значения никогда не загружаются на сервер, не сохраняются в базе данных и не передаются по сети. Весь анализ, сопоставление шаблонов и декодирование выполняются локально на вашем устройстве с помощью клиентского JavaScript. Здесь нет вызовов API, аналитического отслеживания, файлов cookie или сбора данных любого рода. Это делает инструмент полностью безопасным для анализа проприетарного кода Java, декомпилированных исходников APK, образцов вредоносного ПО или конфиденциальных корпоративных приложений.
Часто задаваемые вопросы
Инструмент обнаруживает пять распространённых техник обфускации Java: последовательности Unicode-экранирования (шаблоны \uXXXX, которые лексер Java раскрывает на этапе компиляции), конструкции из hex-строк (пары hex-цифр, декодируемые в читаемый текст), обфусцированные числовые литералы (шестнадцатеричные 0xFF, восьмеричные 0377 и двоичные 0b11111111, преобразуемые в десятичные), строки в кодировке Base64 внутри строковых литералов и шаблоны конкатенации массивов символов, где отдельные символы или небольшие строки объединяются в скрытый текст.
ProGuard в первую очередь переименовывает классы, методы и поля в короткие бессмысленные имена (a, b, c), которые этот инструмент не восстанавливает. Однако инструмент умеет обнаруживать и декодировать строковые техники обфускации, которые добавляют совместимые с ProGuard плагины, такие как Stringer, DexGuard или собственные обфускаторы. Для обфускации имён ProGuard понадобится файл mapping.txt от ProGuard, чтобы сопоставить имена с оригиналами.
Java допускает последовательности Unicode-экранирования (\uXXXX) в любом месте исходного кода, включая идентификаторы и комментарии. Компилятор Java обрабатывает эти экранирования на этапе лексического анализа до синтаксического разбора, поэтому \u0048 эквивалентно 'H'. Обфускаторы используют это, чтобы скрывать строки, кодируя их как последовательности Unicode-экранирований, которые инструменты без поддержки Unicode-декодирования прочитать не могут. Например, "Hello" превращается в "\u0048\u0065\u006C\u006C\u006F".
Обфускаторы Java часто кодируют строки как hex-байтовые массивы и собирают их во время выполнения с помощью методов вроде new String(byte[]), StringBuilder.append((char)0x48) или String.format(). Инструмент обнаруживает шаблоны hex-цифр (0x48, \x48 или обычные hex-пары) внутри строковых литералов и конструкторов байтов, преобразуя их в читаемый текст. Обычно это используют вместе с кодировкой Base64 для многослойной обфускации.
Java поддерживает несколько форматов целочисленных литералов: десятичный, шестнадцатеричный (префикс 0x), восьмеричный (ведущий ноль) и двоичный (префикс 0b, Java 7+). Обфускаторы используют их для маскировки числовых значений. Например, номер порта 8080 может выглядеть как 0x1F90, 017620 или 0b1111110010000. Инструмент обнаруживает все эти форматы в числовых выражениях и вычисляет их десятичные эквиваленты с полным контекстом исходника.
Нет. Инструмент охватывает самые распространённые техники кодирования, но имеет ограничения. Он не умеет декодировать собственные алгоритмы шифрования, построение строк на основе рефлексии, строки, сгенерированные во время выполнения, строки, собранные через нативный код (JNI), или строки, декодируемые через динамическую загрузку классов. Кроме того, обфускация с несколькими слоями кодирования или собственными криптографическими преобразованиями может потребовать нескольких проходов или ручного анализа.
Безусловно. Деобфускатор Java работает полностью в вашем браузере. Ваш исходный код Java, обнаруженные шаблоны и декодированные значения никогда не загружаются на сервер. Вся обработка происходит локально на вашем устройстве без вызовов API, аналитики и сбора данных. Это полностью безопасно для анализа проприетарного кода, образцов вредоносного ПО или конфиденциальных приложений.
Да — 100% бесплатно, без регистрации, без аккаунта и без ограничений на использование. Анализируйте столько кода Java, сколько нужно, сколько угодно раз. Нет платных тарифов, скрытых платежей или ограничений по частоте. Инструмент работает полностью в вашем браузере — ваш код никогда не покидает устройство.