Was ist das DEX-Dateiformat?
Eine .dex-Datei ist ein Dalvik Executable - ein kompilierter Bytecode-Container, der für die Ausführung in der Android-Systemumgebung konzipiert ist. Er enthält kompilierten Code, der auf Android ausgeführt werden kann, und wurde ursprünglich von der Dalvik Virtual Machine interpretiert. Seit Android 5.0 (Lollipop) kompiliert die moderne ART (Android Runtime) .dex-Bytecode Ahead-of-Time statt ihn zu interpretieren, aber das Format bleibt das Standard-Android-Ausführungsformat.
DEX-Dateien in APK-Paketen
.dex-Dateien befinden sich häufig in APK-Paketen, die zur Installation neuer Software auf Android verwendet werden. Historisch enthielt jede APK eine einzige classes.dex-Datei, die alle vom Programm verwendeten Klassen und Methoden speicherte. Größere Apps verwenden jetzt Multidex - Aufteilung des Codes auf classes.dex, classes2.dex, classes3.dex usw. - um das 65.536-Methoden-Limit einer einzelnen Datei zu überschreiten.
DEX-Dateien generieren und inspizieren
Eine .dex-Datei kann automatisch als Teil des Android-Build-Prozesses oder manuell generiert werden. Die moderne Toolchain verwendet den d8-Compiler (Teil der Android SDK Build-Tools), um Java- oder Kotlin-Bytecode in das .dex-Format zu übersetzen. Jede Datei beginnt mit der Magic-Signatur dex\n, gefolgt von einer 3-stelligen Formatversionsnummer (z. B. 035, 037, 038 oder 039) und einem Null-Byte. Bei der Installation kompiliert ART .dex weiter in nativen Code und erzeugt dabei .odex- oder .vdex-Dateien, die auf dem Gerät gespeichert werden.
Sicherheit
RISIKO: MEDIUMEine .dex läuft nicht auf Ihrem PC, daher ist das bloße Besitzen einer solchen Datei risikoarm. Der reale Kontext ist die Android-Malware-Analyse: Bösartige Apps verstecken ihre Logik in DEX (manchmal dynamisch zur Laufzeit geladen), daher kann eine .dex, die Sie aus einer nicht vertrauenswürdigen APK extrahiert haben, schädlichen Code enthalten. Inspizieren Sie solche Dateien nur in einer sicheren Umgebung (Decompiler/Sandbox), und installieren Sie niemals die übergeordnete APK. Seien Sie vorsichtig bei dubiosen „dex zu exe / dex-Öffner“-Download-Seiten - sie tun nichts Legitimes und bündeln häufig Adware.
Formatdetails
kurz gefasstProgramme zum Öffnen von DEX-Dateien
Technische Details
technische Spezifikation| VM-Architektur | Registerbasiert (im Gegensatz zur stapelbasierten JVM; jede DEX-Anweisung benennt explizit Register-Operanden, was die Gesamtzahl der Anweisungen reduziert) |
| Magic Bytes | 8 Bytes bei Datei-Offset 0: ASCII „dex“, Zeilenumbruch (0x0A), 3-stellige Formatversion (z. B. 035, 037, 038, 039), Null-Byte (0x00) |
| Formatversionen | 035 (Android 2.2), 037 (Android 7.0), 038 (Android 8.0), 039 (Android 9+); Versionszeichen sind in den Magic-Header eingebettet |
| Methodenindex-Limit | 65.536 Methoden pro .dex-Datei (16-Bit-Methodenreferenzindex); Apps, die diese Grenze überschreiten, teilen Code auf classes2.dex, classes3.dex usw. auf |
| Integritätsfelder | Der Header enthält eine Adler-32-Prüfsumme und eine 20-Byte-SHA-1-Signatur, die zusammen den Rest der Datei abdecken |
| String-Pool | Alle String-Literale werden einmal in einem gemeinsamen, deduplizierten String-Pool gespeichert; Bytecode referenziert Strings über ganzzahlige Indizes |
| Byte-Reihenfolge | Standardmäßig Little-Endian; der Header enthält die Endianness-Konstante 0x12345678, um die Erkennung umgekehrter Byte-Reihenfolge zu ermöglichen |
| Quellsprachen | Java und Kotlin (und jede auf JVM abzielende Sprache); der d8-Compiler konvertiert .class-Bytecode oder .jar-Archive in DEX |
| Build-Zeit-Compiler | d8 (Android SDK Build-Tools 28.0.1+) hat das veraltete dx-Tool ersetzt; nimmt JVM-.class-Dateien oder .jar-Archive als Eingabe |
| ART Ahead-of-Time-Kompilierung | Bei der Installation konvertiert dex2oat von ART .dex in nativen Maschinencode und speichert Ergebnisse als .odex/.oat-Dateien in /data/dalvik-cache |
| MIME-Typ | application/octet-stream (kein dedizierter registrierter MIME-Typ für das DEX-Format vorhanden) |
| Ausführungsgeschichte | Von der Dalvik VM mit JIT interpretiert (Android 1.0-4.4); Ahead-of-Time + profilgeführt JIT-kompiliert von ART (Android 5.0+) |
| Disassemblierung und Dekompilierung | baksmali disassembliert .dex in Smali-Assembly; jadx und ähnliche Tools dekompilieren .dex zurück in lesbaren Java-Quellcode |
| Speicherort innerhalb der APK | Unkomprimiert im APK-ZIP-Archiv gespeichert; primärer Eintrag heißt immer classes.dex, mit classes2.dex aufwärts für Multidex-Apps |
| Veröffentlicht | 2008 (Android 1.0; Dalvik VM, executed by ART since Android 5.0) |
| Offener Standard | Ja · lizenzgebührenfrei |
| Spezifikation | source.android.com |
DEX-Konvertierungen
Community Q&A
von Nutzern gefragtNoch keine Fragen - stellen Sie die erste Frage zu DEX-Dateien.