Перейти к содержимому
Aback Tools Logo

Анализатор пула констант Java

Загрузите .class-файл Java, чтобы извлечь и проанализировать все константы из пула констант. Просматривайте строки, ссылки на классы, сигнатуры методов, ссылки на поля и числовые константы, упорядоченные по категориям, с подробными описаниями и сырыми hex-данными. Вся обработка выполняется локально и приватно.

Java Constant Pool Analyzer
Upload a Java .class file to extract and analyze all constants from the constant pool. View strings, class references, method signatures, field references, and numeric constants organized by category with detailed descriptions and raw hex data.

Upload a Java .class file

Drag and drop or click to browse. All processing is local and private.

Почему стоит использовать наш анализатор пула констант Java?

  • Полное извлечение пула констант: анализатор пула констант Java разбирает все записи пула констант из любого .class-файла: UTF-8 строки, ссылки на классы, ссылки на методы, ссылки на поля, ссылки на методы интерфейсов, дескрипторы name-and-type, целочисленные, float, long и double константы, method handles, типы методов, записи invoke dynamic и информацию о модулях/пакетах.
  • Анализ иерархии классов и методов: мгновенно определяйте этот класс и суперкласс с их полными именами во внутреннем (com/example/MyClass) и Java-формате (com.example.MyClass). Просматривайте все упомянутые классы, сигнатуры методов, сигнатуры полей и строковые литералы, извлечённые из пула констант.
  • Умная фильтрация и поиск: фильтруйте записи пула констант по категориям: строки, классы, ссылки (метод/поле/интерфейс), числовые константы и дескрипторы типов. Ищите по всем записям по индексу, имени тега или тексту описания. Анализатор пула констант упрощает поиск нужного в файлах с сотнями записей.
  • 100 % приватно — без загрузки данных: весь анализ файлов классов выполняется локально в вашем браузере на JavaScript. Ваши .class-файлы никогда не покидают устройство. Аккаунт не требуется, отслеживания нет, данные нигде не хранятся. Экспортируйте таблицу пула констант в TSV для дальнейшего анализа в электронных таблицах.

Типичные сценарии использования анализатора пула констант Java

  • Реверс-инжиниринг и анализ вредоносного ПО: специалисты по безопасности используют анализ пула констант для понимания обфусцированных или защищённых Java-приложений. Извлекайте все строковые литералы, имена классов и ссылки на методы из неизвестных .class-файлов, чтобы восстановить структуру приложения и выявить подозрительные вызовы API или использование библиотек.
  • Обнаружение и анализ обфускации: инструменты обфускации Java переименовывают классы, методы и поля в бессмысленные имена. Анализатор пула констант раскрывает эти переименованные идентификаторы и показывает полное сопоставление ссылок. ProGuard, DashO и другие попытки обфускации становятся заметны по необычным шаблонам имён в пуле констант.
  • Отладка конфликтов зависимостей: при отладке конфликтов classpath или исключений NoSuchMethodError наш анализатор пула констант помогает определить, против какой версии библиотеки был скомпилирован .class-файл. Сигнатуры методов и ссылки на поля в пуле констант раскрывают точную поверхность API, ожидаемую скомпилированным кодом.
  • Проверка и совместимость файлов классов: убеждайтесь, что .class-файлы корректно сформированы, и проверяйте совместимость с версией Java. Анализатор пула констант проверяет magic-число (0xCAFEBABE), разбирает информацию о версии и структурно читает все записи пула констант. Обнаруживайте повреждённые или подделанные файлы классов до развёртывания.
  • Изучение формата файла класса Java: студенты-информатики и Java-разработчики используют анализатор пула констант для понимания формата файла класса Java. Смотрите, как JVM хранит классы, методы, поля и строковые константы. Изучайте структуру пула констант интерактивно, чтобы развить интуицию о байт-коде и загрузке классов.
  • Извлечение строк и ресурсов: извлекайте все зашитые строки из скомпилированных Java-файлов классов без необходимости в полном декомпиляторе. Анализатор пула констант показывает все строковые литералы, имена классов и дескрипторы типов — бесценно для быстрого анализа скомпилированного кода, строк локализации или констант конфигурации, встроенных в .class-файлы.

Что такое пул констант Java?

Пул констант — критическая структура данных в каждом Java-.class-файле. Он служит таблицей символов, содержащей все константы, имена классов, методов, полей, дескрипторы типов и строковые литералы, на которые ссылается байт-код. Расположенный сразу после заголовка версии файла класса, пул констант индексируется начиная с 1 и используется во всём остальном файле класса. JVM использует этот пул при загрузке классов и выполнении байт-кода для разрешения символьных ссылок в их фактические значения времени выполнения. Наш анализатор пула констант делает всё это видимым и доступным для поиска.

Как работает наш анализатор пула констант Java

  1. Загрузите .class-файл: просто загрузите любой скомпилированный файл класса Java. Анализатор читает сырые байты и проверяет magic-число (0xCAFEBABE) и заголовок версии, чтобы подтвердить корректный формат файла класса Java.
  2. Автоматический разбор пула констант: анализатор перебирает все записи пула констант, декодируя каждую согласно её типу тега. Каждая запись классифицируется как строка, ссылка на класс, ссылка на метод/поле, дескриптор типа, числовая константа или другой тип записи. Все записи индексируются с их сырыми hex-данными для проверки.
  3. Изучайте и фильтруйте результаты: просматривайте полную таблицу пула констант с умной фильтрацией по категориям. Ищите по всем записям, смотрите сводную статистику, включая количество записей по типам, упомянутые классы, сигнатуры методов и извлечённые строковые литералы. Копируйте таблицу для дальнейшего анализа.

Типы записей пула констант: объяснение

  • Utf8 (CONSTANT_Utf8): самый распространённый тип записи, представляющий строки в кодировке UTF-8 для имён классов, методов, полей и дескрипторов типов. Они образуют строительные блоки всех остальных типов ссылок в пуле констант.
  • Ссылки на классы и строки: записи Class указывают на UTF-8 строки с внутренними именами классов (например, java/lang/Object). Записи String ссылаются на UTF-8 строки, представляющие литеральные строковые константы, используемые в байт-коде.
  • Ссылки на методы, поля и методы интерфейсов: эти записи с тройным индексом объединяют ссылку Class, дескриптор NameAndType и тип тега, чтобы полностью квалифицировать доступ к члену. MethodRef представляют вызовы виртуальных методов, а InterfaceMethodRef — диспетчеризацию интерфейсов.
  • NameAndType: объединяет имя члена (например, «toString») с его дескриптором типа (например, «()Ljava/lang/String;»), чтобы однозначно идентифицировать поле или метод без указания класса-владельца. На них ссылаются записи Fieldref, Methodref и InterfaceMethodref.

Приватность, безопасность и примечания по использованию

Анализатор пула констант Java обрабатывает все данные исключительно в вашем браузере с помощью JavaScript. Никакие .class-файлы никогда не загружаются на сервер, не сохраняются в базах данных и не передаются третьим лицам. Нет ограничения на размер файла, кроме доступной памяти вашего браузера. Файлы классов любого размера можно анализировать мгновенно. Инструмент полностью бесплатный, без регистрации, без ограничений на использование и без премиум-уровня. Используйте его для любых целей — личных, коммерческих, образовательных или исследовательских — бесплатно.

Часто задаваемые вопросы

Пул констант — это таблица констант, символических ссылок и строковых литералов, хранящаяся в каждом Java-.class-файле. Он служит таблицей символов времени выполнения для JVM и содержит имена классов, методов, полей, дескрипторы типов, строковые константы и числовые константы. Все инструкции байт-кода ссылаются на записи пула констант по их индексу, что делает его важнейшей структурой данных формата файла класса.

Анализатор извлекает все типы записей пула констант: UTF-8 строки (имена классов, методов, дескрипторы), ссылки на классы, ссылки на методы, ссылки на поля, ссылки на методы интерфейсов, дескрипторы name-and-type, целочисленные/float/long/double числовые константы, method handles, типы методов, записи invoke dynamic и ссылки на модули/пакеты. Каждая запись включает индекс, тип тега, понятное описание и сырые hex-данные.

Нет, анализатор пула констант не является декомпилятором. Он извлекает таблицу символов из файла класса, показывая все значения констант, ссылки на классы и сигнатуры методов. Он не восстанавливает инструкции байт-кода и не декомпилирует тела методов. Для полной декомпиляции понадобится такой инструмент, как CFR, Procyon или JD-GUI.

0xCAFEBABE — это magic-число, идентифицирующее корректные файлы классов Java. Каждый .class-файл должен начинаться с этих четырёх байтов. Если файл не начинается с 0xCAFEBABE, это не корректный файл класса Java. Анализатор пула констант сначала проверяет это magic-число и сообщает об ошибке при его отсутствии, предотвращая анализ не-классовых файлов или повреждённых данных.

Внутренние имена классов используют косые черты как разделители пакетов (например, java/lang/String), тогда как исходный код Java использует точки (java.lang.String). Пул констант хранит имена классов во внутреннем формате. Наш анализатор отображает оба формата: сырое внутреннее имя в таблице и Java-формат с точками в сводке информации о классе.

В формате файла класса Java записи CONSTANT_Long и CONSTANT_Double занимают два последовательных индекса пула констант. Это унаследованное решение ранних спецификаций JVM, связанное с требованиями к 8-байтовому хранению. Когда вы видите пропуски в нумерации индексов пула констант, вероятно, была прочитана запись Long или Double, занявшая два слота.

Безусловно. Анализатор пула констант Java обрабатывает всё локально в вашем браузере с помощью JavaScript. Ваши .class-файлы никогда не загружаются на сервер, не сохраняются в базах данных и не передаются по сети. Весь разбор происходит на вашем устройстве для полной приватности. Это делает безопасным анализ проприетарного кода, конфиденциальных библиотек или обфусцированных приложений.

Да — 100 % бесплатно, без регистрации, без аккаунта и без ограничений на использование. Анализируйте столько .class-файлов, сколько нужно, сколько угодно раз. Нет премиум-уровней, скрытых платежей и ограничений по частоте. Инструмент работает исключительно в вашем браузере — ваши файлы никогда не покидают устройство.