Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
javajive — Descompilador Java e Operador de Serialização em Go Puro | Kitploit
Ferramentas/GitHubGitHub/yaklang/javajive
Análise EstáticaAnálise de CódigoEngenharia ReversaScripting e AutomaçãoAnálise de MalwareUtilitários e FrameworksAnálise de Binários
GitHubyaklang/javajive

javajive

Descompilador Java e Operador de Serialização em Go Puro

Ver Repositório
1844há 1 diaAinda não revisado
Site

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

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

JavaJive

CI Pages Go Reference License: MIT

English | 简体中文 | Website

Um kit de ferramentas Java portátil e puro em Go — extraído e enxugado do yaklang — que faz três coisas e nada mais:

  • Descompilar — .class / .jar / .war / → código-fonte Java legível.
Baixar ferramenta
.zip
  • Analisar classes — inspecionar a estrutura de um arquivo .class (constant pool, campos, métodos, versão, flags de acesso).
  • (De)serializar — analisar e remontar o formato de serialização Java (ObjectStream) com fidelidade de bytes, e convertê-lo de/para JSON.
  • Construído para portabilidade e incorporação:

    • Go puro, binário único — sem JDK, sem cgo, sem runtime ANTLR, sem bibliotecas nativas. Compilação cruzada para linux / macOS / windows em amd64 e arm64.
    • Uma importação — um pacote de fachada unificado javajive envolve as três capacidades; os subpacotes permanecem disponíveis para uso avançado.
    • CLI de primeira classe — subcomandos decompile, classinfo e serial, construídos sobre a biblioteca padrão.
    • Testado de forma cruzada contra um JDK real — a CI compila .class / .jar reais e blobs serializados pelo JDK com javac/java, depois verifica o JavaJive contra eles (veja HARNESS-WORKFLOW.md).
    • Grafo de dependências enxuto — utils / codec / log / go-funk são reimplementados como um núcleo internal/ mínimo e autocontido.

    Validação da v0.4.0

    A auditoria diferencial completa de 38 JARs registra zero regressões em relação à linha de base fixa: todos os 20 JARs anteriormente limpos de compilação são mantidos e 26 agora compilam integralmente. Defeitos da linha de base e 4 stubs de métodos existentes permanecem visíveis. Veja os resultados por JAR e reprodução.

    250 round trips semânticos isolados registram compilação, verificação da JVM, stubs e igualdade em tempo de execução separadamente; as classes originais da aplicação estão ausentes dos classpaths reconstruídos. A CI executa a auditoria semântica no JDK 17 e 21, a comparação histórica completa, e as matrizes de OS/Go e de race. Essas verificações não provam equivalência de todos os métodos de biblioteca. Veja a implementação e limites restantes.

    Benchmarks históricos (v0.3.0)

    Os números a seguir foram reportados para a v0.3.0 em 2026-09-05. Eles não são resultados de aceitação da versão atual nem prova de equivalência comportamental.

    Medido em 34 jars do mundo real (18.759 unidades achatadas) via decompile → recompilação com javac --release 8 → reempacotamento → verificação da JVM:

    • Taxa de 100% de unidades limpas — 18.759 / 18.759 unidades achatadas (Outer$Inner.java) recompilam com zero erros de javac, e 0 erros de sintaxe em todos os 34 jars (uma asserção rígida imposta pela CI, para que nenhum erro de tipo se esconda atrás de uma falha do lexer).
    • Todas as 34 bibliotecas fazem round-trip completo — decompile → recompile → repackage → verificação externa da JVM -Xverify:all por classe passa de ponta a ponta (o codec é byte-idêntico ao jar original sob um diferencial de chamadas). Fixado em provenClean.
    • 14 / 14 algoritmos auto-hospedados (MD5 · SHA-256 · CRC32 · quicksort · Base64 · HeapSort · KMP · SwitchFSM · TryFinally · UnionFind · DiamondTryCatch · DiamondTryFinally · ForContinue · ComputeIfAbsent) fazem round-trip byte a byte.
    • #1 em uma comparação justa de 3 vias no conjunto original de 8 jars — taxa de unidades limpas 100% vs Vineflower 1.10.1 (90,8%) e CFR 0.152 (79,8%); vencendo todos os 8 jars contra ambos.

    Veja BENCHMARK.md para a metodologia completa, tabelas por jar e comandos de reprodução.

    Instalação

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

    Ou compile a partir do código-fonte:

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

    Requer 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
    

    Biblioteca

    Use o pacote de fachada unificado — uma importação cobre as três capacidades:

    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 unificada

    FunçãoPropósito
    Decompile(classBytes) (string, error)Descompila os bytes de um .class
    DecompileFile(path) (string, error)Descompila um .class do disco
    DecompileWithResolver(classBytes, resolve)Descompila com um resolvedor de bytes de classe
    DecompileArchive(src, dst) errorDescompila um .jar/.war/.zip em um diretório
    ParseClass(classBytes) (*ClassObject, error)Analisa os bytes de um .class
    ParseClassFile(path) (*ClassObject, error)Analisa um .class do disco
    ParseSerialized(raw) ([]JavaSerializable, error)Analisa um fluxo de serialização
    ParseSerializedHex(hexStr) ([]JavaSerializable, error)Analisa um fluxo codificado em hex
    MarshalSerialized(objs...) []byteRecodifica objetos para o formato de transmissão
    MarshalSerializedHex(objs...) stringRecodifica para hex
    SerializedToJSON(objs...) ([]byte, error)Converte objetos para JSON
    SerializedFromJSON(raw) ([]JavaSerializable, error)Reconstrói objetos a partir de JSON

    Os subpacotes também são exportados para uso avançado: classparser, classparser/jarwar, serialization.

    Diferenças em relação ao yaklang upstream

    Para permanecer portátil e pequeno, o JavaJive faz algumas escolhas deliberadas em relação ao yaklang. Veja MIGRATE.md para o mapeamento completo e o guia de migração.

    Áreayaklang (upstream)JavaJive
    Rede de segurança ANTLR do descompiladorrevalida o código-fonte gerado via uma gramática Java ANTLR; degrada membros para stubs em caso de falharemovida (dependência pesada); a validação é um no-op, a saída é emitida diretamente
    Camada de suporte (utils / codec / log / go-funk)pacotes compartilhados do monoreporeimplementações mínimas e autocontidas sob internal/
    Gerador de gadgets ysoincluídonão incluído
    Recuperação de charset de literais de string (MatchMIMEType)recuperação opcional GBK/GB18030stub (no-op); comportamento inalterado para a grande maioria dos casos

    As dependências de terceiros estão confinadas a um pequeno conjunto de bibliotecas puras em Go (gobwas/glob, go-viper/mapstructure, samber/lo, tidwall/gjson, segmentio/ksuid, yeka/zip, e alguns golang.org/x/*).

    Testes

    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)
    

    Os testes cruzados com JDK compilam artefatos Java reais em tempo de teste e os verificam contra o JavaJive; eles fazem t.Skip automaticamente quando não há JDK presente. Veja HARNESS-WORKFLOW.md para saber como o harness e a CI funcionam.

    Estrutura do projeto

    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
    

    Licença

    MIT © 2026 VillanCh. JavaJive é derivado do yaklang.