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.

FeedsContatoPrivacidade© 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
276109há 4h 19mRevisado pelo Kitploit
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 — Toolkit Java em Go puro: Descompilar, Analisar Classes, Serialização

JavaJive

CI Pages Go Reference License: MIT

English | 简体中文 | Website

Um toolkit Java portátil e em Go puro — extraído e enxugado do yaklang — focado em quatro coisas:

  • Descompilar — .class / .jar / .war / .zip → código-fonte Java legível.
  • Traduzir DEX — .dex / .apk nativos → .jar determinístico, ou diretamente para código-fonte Java legível, sem invocar uma ferramenta externa dex2jar.
  • 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 transmissão da 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 única importação — um pacote fachada unificado javajive envolve todas as quatro capacidades; os subpacotes permanecem disponíveis para uso avançado.
  • CLI de primeira classe — subcomandos decompile, dex2jar, 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, e então 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 completa auditoria diferencial de 38 JARs registra zero regressões em relação à linha de base fixa: todos os 20 JARs anteriormente compiláveis sem erros 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 SO/Go e de race. Essas verificações não provam a equivalência de todos os métodos de biblioteca. Veja a implementação e os 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 unidades 100% 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 — descompilar → recompilar → reempacotar → verificação externa por classe -Xverify:all na JVM 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 numa 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.

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

Instalação

# 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:

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

Requer Go 1.22+.

CLI

javajive <command> [arguments]

Commands:
  decompile   decompile Java artifacts or the strict DEX 035 subset into Java source
  dex2jar     convert the strict DEX 035 subset in a DEX/APK to a deterministic JAR
  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

# 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

# DEX or APK: run the native DEX-to-JAR pipeline and decompile the result.
# The default output directory is "<input>.src".
javajive decompile classes.dex
javajive decompile app.apk -o ./app-src

# Directory: recursively decompile .class files (requires -o output dir).
javajive decompile ./classes -o ./src

dex2jar

javajive dex2jar -o classes.jar classes.dex
javajive dex2jar -o app.jar app.apk

A entrada é detectada por magic em vez da extensão do arquivo. A saída é um JAR reproduzível. O dex2jar falha a conversão completa em qualquer classe ou método não suportado ou malformado; ele grava um arquivo temporário no mesmo diretório antes de substituir o destino e nunca substitui stubs de método.

Limite de suporte nativo a DEX/APK

A tradução nativa de DEX é atualmente um primeiro recorte vertical estrito, não um conversor geral de aplicações Android. O subconjunto testado é o DEX 035 padrão com fluxo de controle comum de inteiros/referências, campos e invocações, inicialização segura de new-instance/construtor emparelhados, e arrays básicos. Os arquivos de classe gerados são testados por parser e verificados na JVM, incluindo caminhos executáveis de branch, campo, invocação, construtor e int[].

Ainda não suportado: operações try/catch e monitor; valores ou opcodes de float, long e double; switches, instruções de payload e arrays preenchidos; invocações dinâmicas e constantes de método do DEX 038+; anotações e metadados de depuração; CompactDex; e recursos ou bibliotecas nativas de APK. Entrada APK significa que apenas entradas com nomes canônicos classes.dex, classes2.dex, ... são traduzidas. Todos os arquivos DEX selecionados devem ter sucesso transacionalmente ou nenhum JAR é produzido.

classinfo

javajive classinfo Foo.class
Baixar ferramenta