Nachdem einige android
Apps installiert waren, stellte ich fest, dass sie auf dem Smartphone in eine odex
Datei (nicht apk
) geändert werden . Wie passiert das? Wer mich unterrichten kann, interessiert mich sehr.
Nachdem einige android
Apps installiert waren, stellte ich fest, dass sie auf dem Smartphone in eine odex
Datei (nicht apk
) geändert werden . Wie passiert das? Wer mich unterrichten kann, interessiert mich sehr.
Antworten:
Der Blog-Artikel ist größtenteils richtig, aber nicht vollständig. Um ein umfassendes Verständnis der Funktionsweise einer Odex-Datei zu erhalten, müssen Sie ein wenig über die Funktionsweise von Anwendungsdateien (APK) wissen.
Anwendungen sind im Grunde verherrlichte ZIP-Archive. Der Java-Code wird in einer Datei namens classes.dex gespeichert. Diese Datei wird von der Dalvik-JVM analysiert und ein Cache der verarbeiteten Datei classes.dex wird im Dalvik-Cache des Telefons gespeichert.
Ein Odex ist im Grunde eine vorverarbeitete Version der classes.dex einer Anwendung, die für Dalvik ausführungsbereit ist. Wenn eine Anwendung odexiert ist, wird die classes.dex aus dem APK-Archiv entfernt und es wird nichts in den Dalvik-Cache geschrieben. Eine Anwendung, die nicht odexiert ist, enthält zwei Kopien der Datei classes.dex - die im APK gepackte und die verarbeitete im Dalvik-Cache. Der Start zum ersten Mal dauert etwas länger, da Dalvik die Datei classes.dex extrahieren und verarbeiten muss.
Wenn Sie ein benutzerdefiniertes ROM erstellen, ist es eine gute Idee, sowohl Ihre Framework-JAR-Dateien als auch die Standard-Apps zu odexen, um den internen Speicherplatz für vom Benutzer installierte Apps zu maximieren. Wenn Sie ein Thema erstellen möchten, deodexieren Sie einfach -> wenden Sie Ihr Thema an -> reodex -> veröffentlichen Sie es.
Verwenden Sie zum Deodexieren kleine und Baksmali:
Dieser Blog-Artikel erklärt die Interna von ODEX-Dateien:
WAS IST EINE ODEX-DATEI?
Im Android-Dateisystem werden Anwendungen in Paketen mit der Erweiterung .apk geliefert. Diese Anwendungspakete oder APKs enthalten bestimmte .odex-Dateien, deren angebliche Funktion darin besteht, Platz zu sparen. Diese 'Odex'-Dateien sind tatsächlich Sammlungen von Teilen einer Anwendung, die vor dem Booten optimiert wurden. Dies beschleunigt den Startvorgang, da ein Teil einer Anwendung vorgeladen wird. Andererseits erschwert es auch das Hacken dieser Anwendungen, da ein Teil der Codierung bereits vor der Ausführung an einen anderen Speicherort extrahiert wurde.
APKs contain certain .odex files
?!
KUNST
Gemäß den Dokumenten: http://web.archive.org/web/20170909233829/https://source.android.com/devices/tech/dalvik/configure eine .odex
Datei:
enthält AOT-kompilierten Code für Methoden in der APK.
Darüber hinaus scheinen sie reguläre gemeinsam genutzte Bibliotheken zu sein, denn wenn Sie eine App erhalten, überprüfen Sie:
file /data/app/com.android.appname-*/oat/arm64/base.odex
es sagt:
base.odex: ELF shared object, 64-bit LSB arm64, stripped
und aarch64-linux-gnu-objdump -d base.odex
scheint zu funktionieren und eine sinnvolle Demontage zu geben (aber auch einige Müllabschnitte).