Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
ddc — DEX → Descompilador de Java en Rust — análisis rápido y progresivo, CLI bilingüe | Kitploit
Herramientas/GitHubGitHub/ejfkdev/ddc
Seguridad AndroidAnálisis EstáticoAnálisis de CódigoAnálisis Dinámico de Código (DAST)Pentesting de Apps MóvilesIngeniería InversaSeguridad MóvilUtilidades y FrameworksAnálisis de Binarios
GitHubejfkdev/ddc

ddc

DEX → Descompilador de Java en Rust — análisis rápido y progresivo, CLI bilingüe

3255433hace 1 díaRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Ver Repositorio

ddc — Descompilador DEX → Java en Rust

English | 简体中文

CI License: MIT

ddc descompila bytecode DEX de Android de vuelta a Java legible — a escala de aplicaciones del mundo real, consultable como una base de datos y verificado con javac: cada uno de los 909.689 archivos que emite a través de siete APKs del mundo real se analiza sin errores.

Aspectos destacados

  • Rápido — un APK de 226 MB / 20 dex (weibo, 98k clases) se descompila por completo en 5.0s, un paquete de 398 MB (Lark) en 5.5s; las clases patológicas se ejecutan en hilos monitorizados con límite de tiempo en lugar de bloquear la ejecución.
  • Compila — la salida completa de los siete APKs de referencia (reqable, Telegram, WhatsApp, weibo, weixin, qq, lark — 0.91M archivos) pasa javac con cero errores de sintaxis; cada clase de un par de nombres con variantes de mayúsculas/minúsculas (X/Cua vs X/cua) se conserva como su propio archivo en lugar de que la última sobrescriba silenciosamente.
  • Descompilación progresiva — más de 20 subcomandos de consulta (strings, referencias cruzadas, jerarquías, manifest, recursos, descompilaciones por método) responden en milisegundos: consulta primero los metadatos, descompila bajo demanda, omite la ejecución completa por completo.
  • DEX 035–041, completo — APKs multi-dex, contenedores XAPK/APKS/APKM, invoke-custom; las lambdas y concatenaciones de cadenas se pliegan de vuelta a Java real ((a) -> …, Cls::name, a + b).
  • Salida legible — nombres locales al estilo jadx (str, getName() → name, cadenas de parámetros Intrinsics de Kotlin) en lugar de v12; los literales IntDef se muestran como sus constantes desde el primer momento (setVisibility(8) → View.GONE; una tabla de dominio android-37 integrada, --symbols la sobrescribe); el ruido de comprobación de nulos de Kotlin se elimina y los puentes sintéticos access$NNN se insertan en línea en sus puntos de llamada.
  • Salida reproducible — sin marcas de tiempo; dos ejecuciones se comparan limpiamente.
  • CLI bilingüe — los mensajes se localizan automáticamente (DDC_LANG=zh|en lo fuerza; respaldo en inglés).
  • Construido sobre jdc-core, el núcleo neutral respecto a la máquina compartido con jcdc.

Instalación

macOS (Homebrew):

brew install ejfkdev/tap/ddc

Windows (Scoop) — añade el bucket una vez, luego instala por nombre (scoop no resuelve una forma simple 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 (cualquier plataforma — obtiene el binario de release precompilado en lugar de compilar):

cargo binstall ddc-cli

Binarios: cada release incluye binarios sin procesar (sin archivos) para linux-amd64, linux-arm64, windows-amd64, windows-arm64, macos-amd64 y macos-arm64 — las compilaciones que no son para macOS están comprimidas con UPX.

Desde el código fuente (Rust stable):

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

Uso

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

Opciones y ejemplos completos: ddc --help (menú de subcomandos agrupado por flujo de trabajo). La referencia completa — la semántica de cada opción, el formato de salida y el comportamiento de cada subcomando — está en docs/cli.md (中文).

Rendimiento

Siete APKs del mundo real, compilación release, promedios de 3 ejecuciones (Apple Silicon, 6P+12E). El corpus de validación de 39 APKs (4.08M archivos descompilados, tiempo de pared por APK / RSS máximo / puerta de análisis javac) está en docs/validation.md (中文).

Descompilación completa — 7 APKs del mundo real
APKTamañoDescompilación completaRSS máximo
reqable34 MB0.25s139 MB
Telegram62 MB5.64s1479 MB
WhatsApp139 MB5.87s (99,277 archivos — todos los pares de clases con variantes de mayúsculas/minúsculas preservados)1116 MB
weibo226 MB5.03s1172 MB
weixin268 MB11.61s1339 MB
lark398 MB5.52s1831 MB
qq374 MB15.92s2459 MB

Subcomandos de consulta en los mismos APKs (celdas: tiempo / RSS máximo; strings -f <package> --with-locations, findrefs sobre la cadena del paquete y el método onCreate, hierarchy/disasm/getclass sobre la clase launcher de cada aplicación):

Subcomandos de consulta — 13 comandos × 7 APKs
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

Documentación

Descargar herramienta