← retour aux outils back to tools

# dex2jar

Convertit le bytecode DEX Android en fichiers JAR pour la décompilation Java. Première étape essentielle pour reverser des APK Android : produit un JAR ouvrable dans JD-GUI ou JADX. Converts Android DEX bytecode to JAR files for Java decompilation. Essential first step when reversing Android APKs — produces JAR that can be opened in JD-GUI or JADX.

↗ https://github.com/pxb1988/dex2jar

## Overview

dex2jar converts Android’s DEX (Dalvik Executable) format to standard Java JAR files. Once converted, the JAR can be decompiled with tools like JD-GUI, Procyon, or CFR to recover readable Java source code. It’s the classic first step in Android APK analysis.

## Basic Usage

Convert APK directly to JAR

    d2j-dex2jar app.apk

    # Output file: app-dex2jar.jar

Specify output filename

    d2j-dex2jar app.apk -o output.jar

Convert a DEX file directly

    d2j-dex2jar classes.dex -o output.jar

Force overwrite output

    d2j-dex2jar app.apk -o output.jar --force

## Full APK Analysis Workflow

    # Step 1: Extract APK (it's a ZIP)
    mkdir apk_contents
    cp app.apk app.zip
    unzip app.zip -d apk_contents/
    # → classes.dex, resources, AndroidManifest.xml

Step 2: Convert DEX to JAR

    d2j-dex2jar apk_contents/classes.dex -o classes.jar

Step 3: Open in JD-GUI for visual decompilation

    jd-gui classes.jar

Or use jadx (all-in-one, better results)

    jadx -d output/ app.apk

## Handling Multiple DEX Files

    # Modern apps often have multiple dex files (classes.dex, classes2.dex, etc.)
    # Convert each one:
    d2j-dex2jar classes.dex -o classes.jar
    d2j-dex2jar classes2.dex -o classes2.jar
    d2j-dex2jar classes3.dex -o classes3.jar

Or use jadx which handles multiple DEX automatically:

    jadx -d output/ app.apk

## Other dex2jar Tools

Decompile JAR with d2j-jar2jasmin (to Jasmin assembly)

    d2j-jar2jasmin classes.jar

Convert smali back to dex

    d2j-smali2dex smali_dir/

Dump dex file info

    d2j-dex-dump classes.dex

Fast mode (less accurate but faster)

    d2j-dex2jar --fast-mode app.apk

## Opening the JAR

JD-GUI (graphical Java decompiler)

    jd-gui output.jar

Or decompile to source files with jadx (recommended over dex2jar + JD-GUI)

    jadx -d src/ app.apk

Or with procyon (command-line)

    procyon -jar output.jar -o decompiled_src/

Or with cfr

    java -jar cfr.jar output.jar --outputdir decompiled_src/

## Tips

- jadx usually gives better results and handles the full workflow in one step
- dex2jar + JD-GUI is the classic approach — still useful when jadx fails on specific apps
- Pay attention to `com.example.BuildConfig` — often contains server URLs, API keys, debug flags
- Check `AndroidManifest.xml` for permissions, activities, exported components, and deeplinks

Help / Man page

    d2j-dex2jar [options] <file>

    <file>          APK, DEX, or AAR file
    -o FILE         Output file (default: <input>-dex2jar.jar)
    --force         Force overwrite output
    --fast-mode     Less accurate but faster decompilation
    --skip-exceptions  Skip exceptions during conversion
    -d              Debug output

## Vue d’ensemble

dex2jar convertit le format DEX (Dalvik Executable) d’Android en fichiers JAR Java standard. Une fois converti, le JAR peut être décompilé avec des outils comme JD-GUI, Procyon ou CFR pour récupérer du code source Java lisible. C’est la première étape classique de l’analyse d’un APK Android.

## Utilisation de base

    # Convertir un APK directement en JAR
    d2j-dex2jar app.apk
    # Fichier de sortie : app-dex2jar.jar

    # Spécifier le nom du fichier de sortie
    d2j-dex2jar app.apk -o output.jar

    # Convertir directement un fichier DEX
    d2j-dex2jar classes.dex -o output.jar

    # Forcer l'écrasement de la sortie
    d2j-dex2jar app.apk -o output.jar --force

## Workflow complet d’analyse d’APK

    # Étape 1 : extraire l'APK (c'est un ZIP)
    mkdir apk_contents
    cp app.apk app.zip
    unzip app.zip -d apk_contents/
    # → classes.dex, ressources, AndroidManifest.xml

    # Étape 2 : convertir le DEX en JAR
    d2j-dex2jar apk_contents/classes.dex -o classes.jar

    # Étape 3 : ouvrir dans JD-GUI pour une décompilation visuelle
    jd-gui classes.jar

    # Ou utiliser jadx (tout-en-un, meilleurs résultats)
    jadx -d output/ app.apk

## Gérer plusieurs fichiers DEX

    # Les apps modernes ont souvent plusieurs fichiers dex (classes.dex, classes2.dex, etc.)
    # Convertir chacun :
    d2j-dex2jar classes.dex -o classes.jar
    d2j-dex2jar classes2.dex -o classes2.jar
    d2j-dex2jar classes3.dex -o classes3.jar

    # Ou utiliser jadx qui gère plusieurs DEX automatiquement :
    jadx -d output/ app.apk

## Autres outils dex2jar

    # Décompiler un JAR avec d2j-jar2jasmin (vers de l'assembleur Jasmin)
    d2j-jar2jasmin classes.jar

    # Convertir du smali de retour en dex
    d2j-smali2dex smali_dir/

    # Dumper les infos d'un fichier dex
    d2j-dex-dump classes.dex

    # Mode rapide (moins précis mais plus rapide)
    d2j-dex2jar --fast-mode app.apk

## Ouvrir le JAR

    # JD-GUI (décompilateur Java graphique)
    jd-gui output.jar

    # Ou décompiler en fichiers source avec jadx (recommandé plutôt que dex2jar + JD-GUI)
    jadx -d src/ app.apk

    # Ou avec procyon (ligne de commande)
    procyon -jar output.jar -o decompiled_src/

    # Ou avec cfr
    java -jar cfr.jar output.jar --outputdir decompiled_src/

## Conseils

- jadx donne généralement de meilleurs résultats et gère tout le workflow en une seule étape
- dex2jar + JD-GUI est l’approche classique : toujours utile quand jadx échoue sur certaines apps
- Faites attention à `com.example.BuildConfig` : contient souvent des URLs serveur, des clés d’API, des flags de debug
- Vérifiez l’`AndroidManifest.xml` pour les permissions, activités, composants exportés et deeplinks

Aide / Page de manuel

    d2j-dex2jar [options] <file>

    <file>          APK, DEX, or AAR file
    -o FILE         Output file (default: <input>-dex2jar.jar)
    --force         Force overwrite output
    --fast-mode     Less accurate but faster decompilation
    --skip-exceptions  Skip exceptions during conversion
    -d              Debug output