Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
javajive — Чистый Go-декомпилятор Java и оператор сериализации | Kitploit
Инструменты/GitHubGitHub/yaklang/javajive
Статический анализАнализ КодаОбратная инженерияСкриптинг и автоматизацияАнализ вредоносных программУтилиты и фреймворкиАнализ Бинарных Файлов
GitHubyaklang/javajive

javajive

Чистый Go-декомпилятор Java и оператор сериализации

Репозиторий
18441 день назадЕщё не проверено
Сайт

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

JavaJive — Pure-Go Java Toolkit: Decompile, Class Parse, Serialization

JavaJive

CI Pages Go Reference License: MIT

English | 简体中文 | Website

Портативный чисто-Go инструментарий для Java — извлечённый и урезанный из yaklang — который делает три вещи и ничего больше:

  • Декомпиляция — .class / .jar / / → читаемый исходный код Java.
.war
.zip
  • Разбор классов — просмотр структуры файла .class (пул констант, поля, методы, версия, флаги доступа).
  • (Де)сериализация — разбор и повторная сборка проводного формата сериализации Java (ObjectStream) с побайтовой точностью, а также преобразование в/из JSON.
  • Создан для портативности и встраивания:

    • Чистый Go, единый бинарник — без JDK, без cgo, без среды выполнения ANTLR, без нативных библиотек. Кросс-компиляция под linux / macOS / windows на amd64 и arm64.
    • Один импорт — единый фасадный пакет javajive оборачивает все три возможности; подпакеты остаются доступными для продвинутого использования.
    • Полноценный CLI — подкоманды decompile, classinfo и serial, построенные на стандартной библиотеке.
    • Кросс-тестирование против реального JDK — CI компилирует настоящие .class / .jar и сериализованные JDK блобы с помощью javac/java, затем проверяет JavaJive на них (см. HARNESS-WORKFLOW.md).
    • Урезанный граф зависимостей — utils / codec / log / go-funk переписаны как минимальное, самодостаточное ядро internal/.

    Валидация v0.4.0

    Полный дифференциальный аудит 38 JAR-файлов фиксирует ноль зарегистрированных регрессий относительно фиксированной базовой линии: все 20 ранее компилируемых без ошибок JAR-файлов сохранены, а 26 теперь компилируются полностью. Дефекты базовой линии и 4 существующих заглушки методов остаются видимыми. См. результаты по каждому JAR и воспроизведение.

    250 изолированных семантических круговых прогонов отдельно фиксируют компиляцию, верификацию JVM, заглушки и равенство во время выполнения; оригинальные классы приложения отсутствуют в пересобранных classpath. CI запускает семантический аудит на JDK 17 и 21, полное историческое сравнение, а также матрицы OS/Go и гонок. Эти проверки не доказывают эквивалентность каждого метода библиотеки. См. реализацию и оставшиеся границы.

    Исторические бенчмарки (v0.3.0)

    Следующие показатели были заявлены для v0.3.0 от 2026-09-05. Они не являются результатами приёмки текущей версии или доказательством поведенческой эквивалентности.

    Измерено на 34 реальных jar-файлах (18 759 развёрнутых единиц) через декомпиляцию → повторную компиляцию javac --release 8 → переупаковку → верификацию JVM:

    • 100% чистота единиц — 18 759 / 18 759 развёрнутых единиц (Outer$Inner.java) перекомпилируются с нулём ошибок javac и 0 синтаксических ошибок во всех 34 jar-файлах (жёсткое утверждение, принудительно проверяемое в CI, так что ни одна ошибка типа не может скрыться за сбоем лексера).
    • Все 34 библиотеки полностью проходят круговой прогон — декомпиляция → перекомпиляция → переупаковка → внешняя верификация JVM -Xverify:all по каждому классу проходит от начала до конца (кодек побайтово идентичен оригинальному jar-файлу при дифференциальном сравнении вызовов). Зафиксировано в provenClean.
    • 14 / 14 собственных алгоритмов (MD5 · SHA-256 · CRC32 · quicksort · Base64 · HeapSort · KMP · SwitchFSM · TryFinally · UnionFind · DiamondTryCatch · DiamondTryFinally · ForContinue · ComputeIfAbsent) проходят круговой прогон побайтово.
    • №1 в честном трёхстороннем сравнении на исходном наборе из 8 jar-файлов — доля чистых единиц 100% против Vineflower 1.10.1 (90,8%) и CFR 0.152 (79,8%); победа во всех 8 jar-файлах против обоих.

    См. BENCHMARK.md для полной методологии, таблиц по каждому jar и команд воспроизведения.

    Установка

    root@kitploit:~
    # CLI
    go install github.com/yaklang/javajive/cmd/javajive@latest
    
    # Library
    go get github.com/yaklang/javajive@latest
    

    Или сборка из исходников:

    root@kitploit:~
    git clone https://github.com/yaklang/javajive
    cd javajive
    go build -o javajive ./cmd/javajive
    

    Требуется Go 1.22+.

    CLI

    root@kitploit:~
    javajive <command> [arguments]
    
    Commands:
      decompile   decompile .class/.jar/.war/.zip or a directory into Java source
      classinfo   print the structure of a .class file (version, fields, methods)
      serial      Java serialization tools (subcommands: tojson, fromjson)
      version     print the version
      help        show help
    

    decompile

    root@kitploit:~
    # Single class: prints to stdout by default, or -o to write a file.
    javajive decompile Foo.class
    javajive decompile Foo.class -o Foo.java
    
    # Archive: defaults to a "<input>.src" directory, or -o to choose one.
    javajive decompile app.jar
    javajive decompile app.war -o ./app-src
    
    # Directory: recursively decompile .class files (requires -o output dir).
    javajive decompile ./classes -o ./src
    

    classinfo

    root@kitploit:~
    javajive classinfo Foo.class
    
    root@kitploit:~
    class:      InvisibleAnnoSeed
    super:      java/lang/Object
    version:    61.0
    access:     public
    constants:  18
    
    fields (0):
    
    methods (2):
       <init>()V
       run()I
    

    serial

    root@kitploit:~
    # Serialized binary -> JSON. (-hex: input is a hex string, -: read from stdin)
    javajive serial tojson dump.bin
    printf 'aced000574000568656c6c6f' | javajive serial tojson -hex -
    
    # JSON -> serialized binary. (default prints hex; with -o writes raw bytes)
    javajive serial fromjson dump.json -o out.bin
    javajive serial fromjson dump.json          # prints hex
    

    Библиотека

    Используйте единый фасадный пакет — один импорт покрывает все три возможности:

    root@kitploit:~
    import "github.com/yaklang/javajive"
    
    // Decompile a single class, or a whole archive into a directory.
    src, err := javajive.Decompile(classBytes)
    err = javajive.DecompileArchive("app.jar", "app-src")
    
    // Inspect class structure.
    obj, err := javajive.ParseClass(classBytes)
    _ = obj.GetClassName()
    
    // Java serialization: binary -> JSON -> binary.
    objs, _ := javajive.ParseSerialized(raw)          // or ParseSerializedHex(hexStr)
    jsonBytes, _ := javajive.SerializedToJSON(objs...)
    restored, _ := javajive.SerializedFromJSON(jsonBytes)
    out := javajive.MarshalSerialized(restored...)
    

    Унифицированный API

    ФункцияНазначение
    Decompile(classBytes) (string, error)Декомпилировать байты одного .class
    DecompileFile(path) (string, error)Декомпилировать один .class с диска
    DecompileWithResolver(classBytes, resolve)Декомпилировать с резолвером байтов классов
    DecompileArchive(src, dst) errorДекомпилировать .jar/.war/.zip в каталог
    ParseClass(classBytes) (*ClassObject, error)Разобрать байты одного .class
    ParseClassFile(path) (*ClassObject, error)Разобрать один .class с диска
    ParseSerialized(raw) ([]JavaSerializable, error)Разобрать поток сериализации
    ParseSerializedHex(hexStr) ([]JavaSerializable, error)Разобрать поток в hex-кодировке
    MarshalSerialized(objs...) []byteПерекодировать объекты в проводной формат
    MarshalSerializedHex(objs...) stringПерекодировать в hex
    SerializedToJSON(objs...) ([]byte, error)Преобразовать объекты в JSON
    SerializedFromJSON(raw) ([]JavaSerializable, error)Восстановить объекты из JSON

    Подпакеты также экспортируются для продвинутого использования: classparser, classparser/jarwar, serialization.

    Отличия от upstream yaklang

    Чтобы оставаться портативным и компактным, JavaJive идёт на несколько намеренных компромиссов по сравнению с yaklang. См. MIGRATE.md для полного сопоставления и руководства по миграции.

    Областьyaklang (upstream)JavaJive
    Страховочная сеть ANTLR декомпилятораповторно валидирует выгруженный исходный код через грамматику Java ANTLR; при сбое деградирует члены до заглушекудалена (тяжёлая зависимость); валидация — no-op, вывод выдаётся напрямую
    Слой поддержки (utils / codec / log / go-funk)общие пакеты монорепозиторияминимальные самодостаточные реализации в internal/
    Генератор гаджетов ysoвключённе включён
    Восстановление кодировки строковых литералов (MatchMIMEType)опциональное восстановление GBK/GB18030заглушка (no-op); поведение не меняется в подавляющем большинстве случаев

    Сторонние зависимости ограничены небольшим набором чисто-Go библиотек (gobwas/glob, go-viper/mapstructure, samber/lo, tidwall/gjson, segmentio/ksuid, yeka/zip и несколько golang.org/x/*).

    Тестирование

    root@kitploit:~
    go test ./...                 # unit tests + JDK cross-tests (skipped if no JDK)
    go test ./... -race           # data-race free (linux)
    go test ./test/cross/ -v      # Java cross-tests only (needs javac/java on PATH)
    

    Кросс-тесты с JDK компилируют настоящие Java-артефакты во время тестирования и проверяют их против JavaJive; они автоматически вызывают t.Skip, когда JDK отсутствует. См. HARNESS-WORKFLOW.md о том, как работают харнесс и CI.

    Структура проекта

    root@kitploit:~
    javajive.go      unified facade package (import "github.com/yaklang/javajive")
    serialization/   Java serialization/deserialization (from yaklang common/yserx)
    classparser/     class parser + decompiler (from yaklang common/javaclassparser)
    cmd/javajive/    CLI entry point
    internal/        trimmed self-contained support layer (log / codec / funk / utils / filesys / ...)
    test/cross/      JDK-backed cross-tests (javac/java)
    site/            static landing page deployed to GitHub Pages
    

    Лицензия

    MIT © 2026 VillanCh. JavaJive является производным от yaklang.

    Скачать инструмент