Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
javajive — Décompilateur Java et opérateur de sérialisation en pur Go | Kitploit
Outils/GitHubGitHub/yaklang/javajive
Analyse StatiqueAnalyse de CodeRétro-ingénierieScripting et AutomatisationAnalyse de MalwareUtilitaires et FrameworksAnalyse de Binaires
GitHubyaklang/javajive

javajive

Décompilateur Java et opérateur de sérialisation en pur Go

Voir le dépôt
276109il y a 10h 10mVérifié par Kitploit
Site web

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

JavaJive — Boîte à outils Java en Go pur : décompilation, analyse de classes, sérialisation

JavaJive

CI Pages Go Reference License: MIT

English | 简体中文 | Site web

Une boîte à outils Java portable et en Go pur — extraite et allégée de yaklang — centrée sur quatre fonctionnalités :

  • Décompiler — .class / .jar / .war / .zip → code source Java lisible.
  • Traduire le DEX — .dex / .apk natifs → .jar déterministe, ou directement en code source Java lisible, sans invoquer d'outil externe dex2jar.
  • Analyser les classes — inspecter la structure d'un fichier .class (pool de constantes, champs, méthodes, version, indicateurs d'accès).
  • (Dé)sérialiser — analyser et re-marshaler le format de sérialisation Java (ObjectStream) avec fidélité octet par octet, et le convertir vers/depuis JSON.

Conçue pour la portabilité et l'intégration :

  • Go pur, binaire unique — aucun JDK, aucun cgo, aucun runtime ANTLR, aucune bibliothèque native. Compilation croisée vers linux / macOS / windows sur amd64 et arm64.
  • Un seul import — un package façade unifié javajive englobe les quatre capacités ; les sous-packages restent disponibles pour un usage avancé.
  • CLI de premier ordre — sous-commandes decompile, dex2jar, classinfo et serial, basées sur la bibliothèque standard.
  • Testée en croisé contre un vrai JDK — la CI compile de vrais .class / .jar et des blobs sérialisés par le JDK avec javac/java, puis vérifie JavaJive contre eux (voir HARNESS-WORKFLOW.md).
  • Graphe de dépendances allégé — utils / codec / log / go-funk sont réimplémentés sous forme d'un noyau internal/ minimal et autonome.

Validation de la v0.4.0

L'audit différentiel complet de 38 JAR ne relève aucune régression enregistrée par rapport à la base de référence fixe : les 20 JAR précédemment compilables sans erreur sont conservés et 26 compilent désormais intégralement. Les défauts de la base de référence et 4 stubs de méthodes existants restent visibles. Voir les résultats par JAR et la reproduction.

250 allers-retours sémantiques isolés enregistrent séparément la compilation, la vérification JVM, les stubs et l'égalité à l'exécution ; les classes applicatives d'origine sont absentes des classpaths reconstruits. La CI exécute l'audit sémantique sur JDK 17 et 21, la comparaison historique complète, ainsi que les matrices OS/Go et de détection de courses. Ces vérifications ne prouvent pas l'équivalence de chaque méthode de bibliothèque. Voir l'implémentation et les limites restantes.

Benchmarks historiques (v0.3.0)

Les chiffres suivants ont été rapportés pour la v0.3.0 le 2026-09-05. Ils ne constituent pas des résultats d'acceptation de la version actuelle ni une preuve d'équivalence comportementale.

Mesurés sur 34 jars réels (18 759 unités aplaties) via décompilation → recompilation avec javac --release 8 → rempaquetage → vérification JVM :

  • Taux d'unités propres de 100 % — 18 759 / 18 759 unités aplaties (Outer$Inner.java) recompilées avec zéro erreur javac, et 0 erreur de syntaxe sur l'ensemble des 34 jars (une assertion stricte imposée par la CI, afin qu'aucune erreur de type ne puisse se cacher derrière un échec du lexer).
  • Les 34 bibliothèques effectuent un aller-retour complet — décompilation → recompilation → rempaquetage → vérification -Xverify:all par classe via une JVM externe réussie de bout en bout (le codec est identique octet pour octet au jar d'origine selon un différentiel d'appels). Verrouillé dans provenClean.
  • 14 / 14 algorithmes auto-hébergés (MD5 · SHA-256 · CRC32 · quicksort · Base64 · HeapSort · KMP · SwitchFSM · TryFinally · UnionFind · DiamondTryCatch · DiamondTryFinally · ForContinue · ComputeIfAbsent) effectuent un aller-retour octet pour octet.
  • N°1 dans une comparaison équitable à 3 sur le jeu original de 8 jars — taux d'unités propres de 100 % contre Vineflower 1.10.1 (90,8 %) et CFR 0.152 (79,8 %) ; victoire sur les 8 jars face aux deux.

Voir BENCHMARK.md pour la méthodologie complète, les tableaux par jar et les commandes de reproduction.

Install

# CLI
go install github.com/yaklang/javajive/cmd/javajive@latest

# Library
go get github.com/yaklang/javajive@latest

Ou compiler depuis les sources :

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

Nécessite 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

décompiler

# 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

L'entrée est détectée par magic plutôt que par l'extension du nom de fichier. La sortie est un JAR reproductible. dex2jar échoue à la conversion complète sur toute classe ou méthode non prise en charge ou malformée ; il écrit un fichier temporaire dans le même répertoire avant de remplacer la destination et ne substitue jamais de stubs de méthode.

Limite de prise en charge native DEX/APK

La traduction native DEX est actuellement une première tranche verticale stricte, et non un convertisseur général d'applications Android. Le sous-ensemble testé est le DEX 035 standard avec un flux de contrôle ordinaire d'entiers/références, des champs et des invokes, une initialisation sûre et appariée new-instance/constructeur, et des tableaux basiques. Les fichiers de classe générés sont testés par analyseur syntaxique et vérifiés par la JVM, y compris les chemins exécutables de branchement, de champ, d'invoke, de constructeur et de int[].

Télécharger l’outil