Convertir APK en DEX
Extraire classes.dex et les fichiers multidex d’un APK avec 7-Zip ou unzip.
Convertir des fichiers APK en ligne
Nous n’avons pas encore de convertisseur en ligne dédié pour APK vers DEX, mais vous pouvez convertir des fichiers APK en ligne vers ces formats :
Vous voulez convertir APK en DEX ?
Dites-le-nous. Nous choisissons les prochaines conversions à ajouter selon l'intérêt.
Comment convertir apk en fichier dex
- Archives
- Aucune note pour l'instant.
Certains outils d’analyse Android acceptent un fichier DEX autonome plutôt qu’un APK, et son extraction peut réduire un package d’application à son bytecode exécutable à des fins d’inspection ou d’archivage. Un APK contient normalement déjà un ou plusieurs fichiers DEX ; cette tâche consiste donc généralement en une extraction plutôt qu’en une conversion de format.
Qu’est-ce que le format APK ?
Un APK est un package d’application Android stocké sous forme d’archive basée sur ZIP. Android Studio et les outils de build Gradle produisent des APK contenant le code de l’application, les ressources compilées, le manifest, les assets, les bibliothèques natives, les certificats et les métadonnées du package.
Le code exécutable est généralement stocké dans classes.dex. Les applications multidex contiennent également classes2.dex, classes3.dex et les fichiers portant des numéros supérieurs. Les pipelines de build Android génèrent généralement le DEX avec d8 ; R8 peut en outre réduire et optimiser le code. Les anciens projets peuvent utiliser dx.
Qu’est-ce que le format DEX ?
DEX, ou Dalvik Executable, est le bytecode Android destiné aux runtimes Dalvik et ART. Un fichier DEX autonome est utile avec les outils qui acceptent du bytecode sans APK, pour ne conserver que le code exécutable ou pour inspecter les classes avec des outils tels que baksmali ou JADX.
DEX n’est pas une application installable et ne contient pas les ressources, le manifest, les bibliothèques natives, les assets ni les informations de signature de l’APK. Il ne s’agit pas non plus de code source Java. JADX peut produire une sortie semblable à du Java à des fins d’inspection, mais la décompilation perd les commentaires et la mise en forme et peut ne pas reconstituer exactement le flux de contrôle ou les types d’origine.
Comment extraire un DEX d’un APK
- Conservez une copie inchangée de l’APK et analysez les fichiers inconnus avant de les ouvrir ou de les extraire.
- Répertoriez le contenu du package avec
unzip -l app.apksous Linux ou macOS, ou ouvrez l’APK avec 7-Zip sous Windows. Renommer.apken.zipest inutile, car les deux formats utilisent un conteneur ZIP. - Extrayez chaque entrée correspondant à
classes*.dex. Dans un shell, créez un répertoire de sortie et exécutezmkdir -p dex-output && unzip -j app.apk 'classes*.dex' -d dex-output. Dans 7-Zip, sélectionnez les entrées DEX et choisissez 7-Zip → Extract To. - Vérifiez que la sortie inclut tous les fichiers DEX numérotés, et pas uniquement
classes.dex. Conservez les noms de fichiers d’origine, car les fichiers multidex représentent ensemble le bytecode de l’application.
7-Zip est une option de bureau pratique sous Windows, tandis que l’utilitaire standard unzip suffit sous Linux et macOS. Ces outils extraient les fichiers existants sans recompiler ni recompresser le code de l’application.
Quand une recompilation est réellement nécessaire
Si le code DEX a été modifié ou généré à partir de smali ou d’une autre entrée, utilisez le d8 du Android SDK pour le compiler, par exemple d8 --output out classes.jar lorsque l’entrée est un JAR compatible. Remplacer des fichiers DEX dans un APK constitue une opération de rebuild, et non une simple extraction ; le package reconstruit doit être aligné et signé avant qu’Android puisse l’installer. Dex2jar n’est pas l’outil approprié pour convertir un APK en DEX : il convertit le bytecode DEX en fichiers JAR compatibles avec Java à des fins d’analyse.
Limites de compatibilité et de sécurité
L’extraction du DEX préserve le bytecode présent dans l’APK, mais un fichier autonome peut dépendre d’autres fichiers DEX, de ressources, de bibliothèques natives ou de classes du package. Combiner des fichiers multidex en un seul n’est pas une conversion neutre et peut dépasser les limites de références de méthodes du DEX ou nécessiter une reconstruction avec des dépendances compatibles et un niveau d’API approprié.
La modification d’un fichier DEX invalide la signature d’origine de l’APK lorsque le package est reconstruit. Un DEX autonome ne possède aucune signature APK et ne peut pas être installé seul. Certains packages protégés ou inhabituels peuvent charger du code supplémentaire lors de l’exécution, stocker du code en dehors des entrées classes*.dex habituelles ou utiliser des split APK ; l’extraction des entrées visibles peut donc ne pas capturer la totalité du code exécutable.
Les convertisseurs APK-to-DEX en ligne sont inutiles pour les packages ordinaires et ne conviennent pas aux fichiers propriétaires, signés ou non fiables, car leur téléversement expose le code de l’application et éventuellement des secrets intégrés. L’extraction locale avec 7-Zip ou unzip est plus sûre et produit directement les fichiers DEX requis.
Comparaison du format APK vs DEX
Comparaison entre les formats APK et DEX sur les propriétés les plus importantes pour cette conversion.
| Propriété | .APK Android Package | .DEX Dalvik Executable |
|---|---|---|
| Norme ouverte | Non | Non |
| Compression | Les deux | — |
| Taille de fichier typique | Moyen | Petit |
| S’ouvre dans un navigateur web | Non | Non |
| Modification ultérieure | Non modifiable directement | Non modifiable directement |
| Support des métadonnées | Basique | Basique |
| Lisible en texte brut | Non | Non |
| Idéal pour | Intégration dans des applications | Intégration dans des applications |
| Date d’introduction | 2008 | 2008 |
| Développeur | ||
| Type MIME | application/vnd.android.package-archive | — |
La base de données ne contient actuellement aucun convertisseur de fichier apk.