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é.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
ddc — DEX → Décompilateur Java en Rust — analyse rapide et progressive, CLI bilingue | Kitploit
Outils/GitHubGitHub/ejfkdev/ddc
Sécurité AndroidAnalyse StatiqueAnalyse de CodeAnalyse Dynamique de Code (DAST)Pentesting d'Applications MobilesRétro-ingénierieSécurité MobileUtilitaires et FrameworksAnalyse de Binaires
GitHubejfkdev/ddc

ddc

DEX → Décompilateur Java en Rust — analyse rapide et progressive, CLI bilingue

3255433il y a 1 jourVérifié par Kitploit

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
Voir le dépôt

ddc — Décompilateur DEX → Java en Rust

English | 简体中文

CI License: MIT

ddc décompile le bytecode Android DEX en Java lisible — à l'échelle d'applications réelles, interrogeable comme une base de données, et vérifié par javac : chacun des 909 689 fichiers qu'il produit sur sept APK réels se parse sans erreur.

Points forts

  • Rapide — un APK de 226 Mo / 20 dex (weibo, 98k classes) se décompile entièrement en 5,0 s, un bundle de 398 Mo (Lark) en 5,5 s ; les classes pathologiques s'exécutent sur des threads surveillés à échéance bornée au lieu de bloquer l'exécution.
  • Compile — la sortie complète des sept APK de référence (reqable, Telegram, WhatsApp, weibo, weixin, qq, lark — 0,91 M fichiers) passe javac avec zéro erreur de syntaxe ; chaque classe d'une paire de noms à casse variable (X/Cua vs X/cua) est préservée comme son propre fichier au lieu que la dernière écrase silencieusement.
  • Décompilation progressive — plus de 20 sous-commandes de requête (strings, références croisées, hiérarchies, manifest, ressources, décompilations par méthode) répondent en millisecondes : interrogez d'abord les métadonnées, décompilez à la demande, sautez complètement l'exécution complète.
  • DEX 035–041, complet — APK multi-dex, conteneurs XAPK/APKS/APKM, invoke-custom ; les lambdas et les concaténations de chaînes se replient en Java réel ((a) -> …, Cls::name, a + b).
  • Sortie lisible — noms locaux de style jadx (str, getName() → name, chaînes de paramètres Kotlin Intrinsics) au lieu de v12 ; les littéraux IntDef s'affichent comme leurs constantes d'emblée (setVisibility(8) → View.GONE ; une table de domaine android-37 intégrée, --symbols pour remplacer) ; le bruit des vérifications de nullité Kotlin est élidé et les ponts synthétiques access$NNN sont inlinés à leurs sites d'appel.
  • Sortie reproductible — pas d'horodatages ; deux exécutions se comparent proprement.
  • CLI bilingue — les messages se localisent automatiquement (DDC_LANG=zh|en force ; repli en anglais).
  • Basé sur jdc-core, le cœur neutre partagé avec jcdc.

Installation

macOS (Homebrew) :

brew install ejfkdev/tap/ddc

Windows (Scoop) — ajoutez le bucket une fois, puis installez par nom (scoop ne résout pas une forme nue user/repo/app — issue #3) :

scoop bucket add ejfkdev https://github.com/ejfkdev/scoop-bucket
scoop install ddc

# or install straight from the manifest URL, no bucket needed:
scoop install https://raw.githubusercontent.com/ejfkdev/scoop-bucket/main/bucket/ddc.json

cargo-binstall (toute plateforme — récupère le binaire de release précompilé au lieu de compiler) :

cargo binstall ddc-cli

Binaires : chaque release fournit des binaires bruts (sans archives) pour linux-amd64, linux-arm64, windows-amd64, windows-arm64, macos-amd64 et macos-arm64 — les builds non-macOS sont compressés avec UPX.

Depuis les sources (Rust stable) :

git clone https://github.com/ejfkdev/ddc && cd ddc
cargo build --release

Utilisation

ddc app.apk                          # full decompile → app-out/
ddc app.apk -c com.example.Foo       # one class to stdout
ddc app.apk -o - | less              # everything to stdout

ddc info app.apk                      # app context (label via arsc, package,
                                      # version, md5) + per-dex counts
ddc mainactivity app.apk             # entry point: package + launcher
ddc findrefs app.apk string token    # every const-string "token" site
ddc getmethod app.apk Foo.toString   # one method, all overloads
ddc pkg app.apk --app -o own/        # the app's own code only

Options et exemples complets : ddc --help (menu des sous-commandes groupé par flux de travail). La référence complète — la sémantique de chaque option, le format de sortie et le comportement de chaque sous-commande — se trouve dans docs/cli.md (中文).

Performances

Sept APK réels, build release, moyennes sur 3 exécutions (Apple Silicon, 6P+12E). Le corpus de validation de 39 APK (4,08 M fichiers décompilés, temps réel par APK / RSS maximal / porte de parsing javac) est dans docs/validation.md (中文).

Décompilation complète — 7 APK réels
APKTailleDécompilation complèteRSS maximal
reqable34 MB0.25s139 MB
Telegram62 MB5.64s1479 MB
WhatsApp139 MB5.87s (99,277 files — case-variant class pairs all preserved)1116 MB
weibo226 MB5.03s1172 MB
weixin268 MB11.61s1339 MB
lark398 MB5.52s1831 MB
qq374 MB15.92s2459 MB

Sous-commandes de requête sur les mêmes APK (cellules : temps / RSS maximal ; strings -f <package> --with-locations, findrefs sur la chaîne du package et la méthode onCreate, hierarchy/disasm/getclass sur la classe de lancement de chaque app) :

Sous-commandes de requête — 13 commandes × 7 APK
CommandreqableTelegramWhatsAppweiboweixinlarkqq
info0.12s / 40MB0.21s / 88MB0.42s / 305MB0.65s / 610MB0.79s / 550MB1.10s / 907MB1.08s / 1240MB
listclasses0.04s / 21MB0.06s / 84MB0.08s / 93MB0.13s / 396MB0.21s / 417MB0.20s / 299MB0.27s / 391MB
manifest0.03s / 7MB0.03s / 14MB0.02s / 20MB0.03s / 43MB0.04s / 31MB0.03s / 28MB0.03s / 47MB
mainactivity0.04s / 24MB0.06s / 86MB0.08s / 224MB0.10s / 358MB0.13s / 371MB0.14s / 421MB0.21s / 554MB
res0.02s / 7MB0.03s / 15MB0.03s / 22MB0.05s / 60MB0.04s / 32MB0.04s / 31MB0.05s / 53MB
largest0.05s / 29MB0.08s / 78MB0.15s / 236MB0.31s / 500MB0.32s / 500MB0.46s / 676MB0.66s / 810MB
strings0.05s / 24MB0.10s / 85MB0.21s / 222MB0.39s / 354MB0.45s / 395MB0.52s / 431MB0.81s / 551MB
findrefs-string0.04s / 26MB0.05s / 70MB0.06s / 214MB0.10s / 403MB0.12s / 446MB0.07s / 335MB0.14s / 871MB
findrefs-method0.05s / 26MB0.07s / 70MB0.07s / 219MB0.09s / 410MB0.10s / 458MB0.10s / 620MB0.15s / 896MB
members0.07s / 23MB0.21s / 86MB0.62s / 222MB1.32s / 366MB1.17s / 381MB1.64s / 443MB2.66s / 572MB
hierarchy0.04s / 24MB0.05s / 86MB0.09s / 212MB0.12s / 396MB0.14s / 386MB0.17s / 429MB0.22s / 548MB
disasm0.04s / 23MB0.07s / 88MB0.09s / 214MB0.12s / 371MB0.13s / 392MB0.16s / 422MB0.20s / 533MB
getclass0.05s / 34MB0.28s / 182MB0.14s / 357MB0.33s / 740MB0.37s / 942MB0.50s / 1235MB0.76s / 1651MB

Documentation

Télécharger l’outil