...............
- Статус
- Оффлайн
- Регистрация
- 26 Янв 2024
- Сообщения
- 13
- Реакции
- 8
Плагин для x64dbg который превращает дебаггер в полноценный инструмент для анализа Java приложений. Подключаешься к любому Java процессу — видишь классы, методы, байткоды, JIT код, объекты, потоки. Всё через чтение памяти, никакого JVMTI или Attach API.
Работает через VMStructs — экспортируемые символы из jvm.dll которые дают оффсеты всех внутренних структур HotSpot JVM. Тот же механизм что используют Serviceability Agent и JConsole, но без необходимости подключать агент.
Основные фичи
Анализ классов
Работает через VMStructs — экспортируемые символы из jvm.dll которые дают оффсеты всех внутренних структур HotSpot JVM. Тот же механизм что используют Serviceability Agent и JConsole, но без необходимости подключать агент.
Основные фичи
Анализ классов
- Браузер классов с деревом пакетов (как JD-GUI)
- Встроенный декомпилятор + интеграция с CFR
- Просмотр байткодов с подсветкой синтаксиса
- Просмотр полей, vtable, аннотаций, иерархии наследования
- Поддержка Mojang маппингов для Minecraft
JIT анализ
- CodeCache viewer — все скомпилированные методы (C1/C2)
- nmethod анализатор — entry point, code size, state, compile ID
- Interpreter dispatch table — все 256 opcode handler'ов
- Деоптимизация трекер — какие методы деоптимизированы и почему
Хакинг тулкит
- jvm.bp — брейкпоинт на Java метод по имени
- jvm.patch — патч байткодов в рантайме (return true/false/null)
- jvm.watch — hardware watchpoint на поле объекта
- Realtime field monitor — как Cheat Engine, значения обновляются каждые 200мс
- Field freezer — заморозка значения поля
- Memory pattern scanner (AOB scan)
Native Obfuscator анализ
- Детект native стабов (методы переведённые в нативный код)
- DLL маппер — какая DLL обслуживает какие методы
- String pool finder — поиск строковых пулов в DLL обфускатора
- JNI function tracer — трассировка RegisterNatives, FindClass, CallVoidMethod через JNI function table
- Экспорт маппинга в CSV
Дамп классов
- Дамп одного класса или ВСЕХ классов из памяти
- Экспорт в ZIP архив
- Un-rewrite HotSpot байткодов обратно в стандартные
- Работает с зашифрованными классами (дамп из runtime, не с диска)
GUI
5 главных табов в x64dbg:
- JVM Classes — браузер классов + 21 подтаб справа (декомпилятор, хуки, строки, поиск, нативы, трейс, хип, потоки, GC, локи, деопты, пакеты, native obf, JNI trace, иерархия, vtable, размеры, диспатч, аннотации, invokedynamic, AOB scan)
- JVM CodeCache — таблица JIT методов с цветовой кодировкой C1/C2
- JVM Objects — инспектор объектов с freeze/set value
- JVM Native — анализ native обфускации
- JVM Watch — realtime монитор полей
Команды
26+ команд:
Код:
jvm.classes String — найти классы
jvm.methods java/lang/String — методы класса
jvm.bp java/lang/String.equals — брейкпоинт на метод
jvm.patch class.method return_true — патч метода
jvm.hooks — детект хуков
jvm.strings minecraft — поиск строк
jvm.search render — глобальный поиск методов
jvm.watch 0xADDR health — watchpoint на поле
jvm.profile — топ горячих методов
jvm.dump java/lang/String — дамп класса
jvm.dumpall — дамп всех классов в ZIP
jvm.mappings client.txt — загрузить Mojang маппинги
jvm.loaders — дерево ClassLoader'ов
jvm.flags — VM константы
Как работает
Плагин читает экспорты из jvm.dll:
- gHotSpotVMStructs — таблица всех полей всех структур JVM (тип, имя, оффсет)
- gHotSpotVMTypes — размеры всех типов
- gHotSpotVMIntConstants — целочисленные константы
Из этих таблиц получаем оффсеты: ClassLoaderDataGraph._head → ClassLoaderData._klasses → InstanceKlass._methods → Method._constMethod → байткоды. Всё через cross-process memory read, никакого инжекта.
Установка
1. Скачать jvm-inspector.dp64 из релизов
2. Кинуть в папку x64dbg/x64/plugins/
3. Перезапустить x64dbg
4. Аттачнуться к Java процессу
Для Minecraft
Код:
jvm.mappings C:\path\to\client.txt
jvm.cfr C:\path\to\cfr.jar
Скачать маппинги для своей версии: https://piston-meta.mojang.com/mc/game/version_manifest_v2.json
Стек технологий
- C++ / Qt5 (GUI)
- x64dbg Plugin SDK
- OpenJDK VMStructs
- CFR Decompiler (опционально)
- ~55 файлов, ~17K строк кода