#### # HINWEIS: Die Funktionszeichenfolge ist sehr wichtig. Es kann zusammen mit der Entwicklung der Härtungsdienste geändert werden. Wenn es falsch ist, kann der Entpackvorgang nicht ausgelöst werden. DexHunter nutzt „fwrite“ und andere libc-Funktionen, um Dateien zu manipulieren. Diese Funktionen sind jedoch von Härtungsdiensten abhängig, was zum Absturz des Prozesses führt. Daher können Sie das bereitgestellte Image nicht zum Entpacken der neuesten Hardedning-Dienste verwenden. Sie sollten diese Funktionen besser durch direkte Systemaufrufe ersetzen, um einen Absturz zu vermeiden.,
DexHunter zielt darauf ab, die dex-Datei automatisch zu entpacken.
DexHunter basiert auf dem Quellcode von Android runtime. Es besteht aus Modified ART und DVM Runtime. Sie können die geänderte Laufzeit verwenden, um den ursprünglichen Inhalt in Android-Quellcodes (Android 4.4.3) zu ersetzen. Die Modifikation erfolgt hauptsächlich in „art / runtime/class_linker.cc“ (ART) und „dalvik/vm/native / dalvik_system_DexFile.cpp“ (DVM).
###Verwendung:
Wenn Sie eine App entpacken möchten, müssen Sie die Datei „dexname“ im Handy auf „/data/“ verschieben, bevor Sie die App starten., Die erste Zeile in “ dexname „ist die Funktionszeichenfolge (bezogen auf“ slide.pptx“). Die zweite Zeile ist der Datenpfad der Ziel-App (z. B. “ /data/data / com.Test.Test/“). Sein Zeilenende sollte im Stil von Unix/Linux sein. Sie können das Protokoll mit „logcat“ beobachten, um festzustellen, ob der Entpackvorgang abgeschlossen ist. Einmal fertig, das erzeugte “ Ganze.dex “ Datei ist das gewünschte Ergebnis, das sich im Datenverzeichnis der App befindet.
## # Tipps:
-
DexHunter verwendet den Inhalt einfach vor dem Abschnitt „class_def“, anstatt ihn für die Effizienz zu analysieren., Wenn es Probleme gibt, können Sie sie analysieren und wieder zusammensetzen oder statisch ändern.
-
Es ist erwähnenswert, dass einige Felder “ annotation_off „oder“ debug_info_off “ im Ergebnis ungültig sein können. Diese Dateien haben nichts mit der Ausführung zu tun, nur um die Dekompilierung zu behindern. Wir beschäftigen uns im Moment nicht speziell mit dieser Situation. Sie können einfach einige Skripte programmieren, um die ungültigen Dateien mit 0x00000000 festzulegen.,
-
Bekanntlich können einige Härtungsdienste mehrere Methoden in der dex-Datei schützen, indem sie die Anweisungen kurz vor der Ausführung wiederherstellen und kurz nach der Ausführung löschen. Sie müssen also auch die Funktion „DoInvoke“ (ART) oder „dvmMterp_invokeMethod“ (DVM) ändern, um die geschützte Anweisung während der Ausführung zu extrahieren.
4) Die Funktionszeichenfolge kann zusammen mit der Entwicklung der Härtungsdienste geändert werden.
5) Wenn die „fwrite“ – und andere libc-Funktionen fehlschlagen, sind diese Funktionen möglicherweise durch Härten von Sevices verbunden., Daher können Sie den Speicher nicht über sie ablegen. Sie können diese Einschränkung umgehen, indem Sie relevante Systemaufrufe direkt aufrufen.
DexHunter hat seine eigene Einschränkung. Da sich die Härtungsdienste entwickeln, ist DexHunter möglicherweise in Zukunft nicht mehr wirksam. Wenn Sie interessiert sind, können Sie DexHunter ändern, um kontinuierlich mit den Härtungsservices Schritt zu halten.
## # Dateibeschreibung:
„demo. mp4“ ist das Demonstrationsvideo zum Entpacken einer gehärteten App von Ali.
„test.apk “ ist das im Video verwendete Beispiel.
„dexname“ ist die im Video verwendete Konfigurationsdatei.,
Das Verzeichnis“art“ist die modifizierte Laufzeit für Art.
“ dalvik “ Verzeichnis ist die modifizierte Laufzeit für DVM.
„image“ 7z-Dateien enthalten die im Video verwendeten System-Image-Dateien.
Wenn sie fragen haben, kontaktieren sie mich bitte per E-mail an [email protected].
Wenn Sie diesen Code verwenden, zitieren Sie bitte das folgende Papier. Danke!
Yueqian Zhang, Xiapu Luo, und Haoyang Yin, DexHunter: Zu Extrahieren Versteckten Code von Android-Anwendungen verpackt, Proceedings of the 20th European Symposium on Research in Computer Security (ESORICS), Vienna, Austria, September 2015.