Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
ddc — DEX → Decompilatore Java in Rust — veloce, analisi progressiva, CLI bilingue | Kitploit
Strumenti/GitHubGitHub/ejfkdev/ddc
Sicurezza AndroidAnalisi StaticaAnalisi del CodiceAnalisi Dinamica del Codice (DAST)Pentesting di App MobiliReverse EngineeringSicurezza MobileUtilità e FrameworkAnalisi di Binari
GitHubejfkdev/ddc

ddc

DEX → Decompilatore Java in Rust — veloce, analisi progressiva, CLI bilingue

32554331 giorno faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Vedi Repository

ddc — Decompilatore DEX → Java in Rust

English | 简体中文

CI License: MIT

ddc decompila il bytecode DEX di Android di nuovo in Java leggibile — alla scala di app reali, interrogabile come un database, e verificato con javac: ognuno dei 909.689 file che emette su sette APK reali viene analizzato senza errori.

Punti salienti

  • Veloce — un APK da 226 MB / 20 dex (weibo, 98k classi) viene decompilato completamente in 5,0s, un bundle da 398 MB (Lark) in 5,5s; le classi patologiche vengono eseguite su thread monitorati con scadenza invece di bloccare l'esecuzione.
  • Compila — l'output completo di tutti e sette gli APK di benchmark (reqable, Telegram, WhatsApp, weibo, weixin, qq, lark — 0,91M file) passa javac con zero errori di sintassi; ogni classe di una coppia di nomi con varianti di maiuscole/minuscole (X/Cua vs X/cua) viene preservata come file a sé stante invece che l'ultima sovrascriva silenziosamente.
  • Decompilazione progressiva — oltre 20 sottocomandi di query (strings, riferimenti incrociati, gerarchie, manifest, risorse, decompilazioni per metodo) rispondono in millisecondi: prima interroga i metadati, decompila su richiesta, salta del tutto l'esecuzione completa.
  • DEX 035–041, completo — APK multi-dex, container XAPK/APKS/APKM, invoke-custom; lambda e concatenazioni di stringhe si ricompongono in vero Java ((a) -> …, Cls::name, a + b).
  • Output leggibile — nomi locali in stile jadx (str, getName() → name, stringhe dei parametri Intrinsics di Kotlin) invece di v12; i letterali IntDef vengono resi come le loro costanti fin da subito (setVisibility(8) → View.GONE; una tabella di dominio android-37 integrata, --symbols la sovrascrive); il rumore dei null-check di Kotlin viene eliminato e i bridge sintetici access$NNN vengono inlinati nei loro punti di chiamata.
  • Output riproducibile — nessun timestamp; due esecuzioni producono un diff pulito.
  • CLI bilingue — i messaggi si localizzano automaticamente (DDC_LANG=zh|en forza; fallback in inglese).
  • Basato su jdc-core, il core machine-neutral condiviso con jcdc.

Installazione

macOS (Homebrew):

brew install ejfkdev/tap/ddc

Windows (Scoop) — aggiungi il bucket una volta, poi installa per nome (scoop non risolve la forma nuda 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 (qualsiasi piattaforma — scarica il binario precompilato della release invece di compilare):

cargo binstall ddc-cli

Binari: ogni release fornisce binari grezzi (senza archivi) per linux-amd64, linux-arm64, windows-amd64, windows-arm64, macos-amd64 e macos-arm64 — le build non-macOS sono compresse con UPX.

Dai sorgenti (Rust stable):

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

Utilizzo

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

Opzioni ed esempi completi: ddc --help (menu dei sottocomandi raggruppato per flusso di lavoro). Il riferimento completo — la semantica di ogni opzione, il formato di output e il comportamento di ogni sottocomando — si trova in docs/cli.md (中文).

Prestazioni

Sette APK reali, build release, medie su 3 esecuzioni (Apple Silicon, 6P+12E). Il corpus di validazione di 39 APK (4,08M file decompilati, tempo wall per APK / RSS di picco / gate di parsing javac) è in docs/validation.md (中文).

Decompilazione completa — 7 APK reali
APKDimensioneDecompilazione completaRSS di picco
reqable34 MB0,25s139 MB
Telegram62 MB5,64s1479 MB
WhatsApp139 MB5,87s (99.277 file — tutte le coppie di classi con varianti di maiuscole/minuscole preservate)1116 MB
weibo226 MB5,03s1172 MB
weixin268 MB11,61s1339 MB
lark398 MB5,52s1831 MB
qq374 MB15,92s2459 MB

Sottocomandi di query sugli stessi APK (celle: tempo / RSS di picco; strings -f <package> --with-locations, findrefs sulla stringa del package e sul metodo onCreate, hierarchy/disasm/getclass sulla classe launcher di ogni app):

Sottocomandi di query — 13 comandi × 7 APK
ComandoreqableTelegramWhatsAppweiboweixinlarkqq
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

Documentazione

Scarica lo strumento