Heim  >  Artikel  >  Betrieb und Instandhaltung  >  So erstellen Sie ein neues Projekt in Android

So erstellen Sie ein neues Projekt in Android

王林
王林nach vorne
2023-05-29 23:37:241470Durchsuche

content

1. Ein einfaches Tutorial zu einem nützlichen Tool (Einblick)

Was können Sie lernen?

Eine superleistungsfähige Analyseassistentensoftware.

2. Analyse des Android-Optimierungsprozesses

Was können Sie lernen?

1. Detailliertes Verständnis des Android-Quellcodes
2 Sie können die Funktion im unteren Teil sehen Boss' Shell

3. Parsen und Analysieren von Android-DEX-Dateien

Was können Sie lernen?
1. Andere Funktionen, die heruntergeladen werden können

2. Der Prozess der Dex-Dateianalyse
3. Wenig Wissen über Shelling und Trennung
4. Analyse des Ladevorgangs der Android DEX-Klasse

Was können Sie lernen?

1. Der komplette Prozess des Klassenladens
2. Die Auswahl der Beschuss- und Verstärkungsklassen


0x01 Ein einfaches Tutorial zu einem nützlichen Tool (Einblick) #🎜 🎜#

Diese Software verfügt über eine starke Hilfsfunktion zur Analyse von C/C++- und Java-Quellcode. Sie wird später verwendet, daher werde ich eine kurze Einführung geben.

Werkzeuge finden Sie im Anhang. Einfach separat hochladen und herunterladen.

SI3US-205035-36448

Ein Registrierungscode wird hier bereitgestellt.

Installieren, weiter, weiter.

So erstellen Sie ein neues Projekt in AndroidNeues Projekt erstellen

Neues Projekt auswählen.


Einzelspieler OKSo erstellen Sie ein neues Projekt in Android


So erstellen Sie ein neues Projekt in AndroidWähle den ersten eins


So erstellen Sie ein neues Projekt in AndroidWählen Sie „Baum hinzufügen“, was bedeutet, dass alle hinzugefügt werden. Wir werden es später verwenden. Gehen Sie zur Analyse zu dieser Software.

Analyse des Android-Optimierungsprozesses


Ich möchte es sagen, jetzt weiß ich, wie wichtig Englisch ist, aber ich kann es in nachschlagen das Wörterbuch. So erstellen Sie ein neues Projekt in Android

So erstellen Sie ein neues Projekt in Android1.extractAndProcessZip

Lassen Sie uns nicht zuerst über diesen Inhalt sprechen Name dieser Funktion. extrahieren: Extrahieren und verarbeiten, ZIP verarbeiten, komprimiertes Dateiformat. Wir alle wissen, dass APK tatsächlich ein ZIP-komprimiertes Paket ist.

Dann ist die Bedeutung dieser Funktion der Prozess des Extrahierens von Zip.

Dann analysieren wir es Schritt für Schritt.


So erstellen Sie ein neues Projekt in Android
Hier ist die Zwischenvariablendefinition von extractAndProcessZip. Es steht nicht im Mittelpunkt unserer Forschung.


DexClassVerifyMode verifyMode = VERIFY_MODE_ALL;

Dieser Satz definiert verifyMode, das Verifizierungsmodul. Die hier initialisierten Daten sind VERIFY_MODE_ALL, also alles Alle sind verifiziert.


DenkenSo erstellen Sie ein neues Projekt in Android

Wenn wir hier Änderungen vornehmen, können wir diese Überprüfung überspringen?


Schauen wir uns andere Werte an. So erstellen Sie ein neues Projekt in Android

Wenn Sie eine Idee haben, können Sie diesen Wert selbst definieren.

DexOptimizerMode dexOptMode = OPTIMIZE_MODE_VERIFIED;

Schauen wir weiter nach unten.


So erstellen Sie ein neues Projekt in Android
Es gibt eine Funktion namens dexOptCreateEmptyHeader, die, wie der Name schon sagt, einen leeren Header für die Dex-Optimierung erstellt.


So erstellen Sie ein neues Projekt in Android
dexOffset, notieren Sie die Dateiposition, damit wir später hierher zurückkommen können, was eigentlich der Beginn des Lesens ist Startposition der Dex-Datei.

Schauen wir uns die nächste Funktion an.
So erstellen Sie ein neues Projekt in Android

Öffnen Sie das Zip-Archiv und suchen Sie den DEX-Eintrag.

Dieser Teil dient offensichtlich dazu, die Dex-Datei aus der APK zu finden.

Fahren Sie dann mit der Analyse fort.
So erstellen Sie ein neues Projekt in Android

Funktion zum Extrahieren einiger Dex-Offsets.
So erstellen Sie ein neues Projekt in Android


Extrahieren Sie die DEX-Daten mit dem aktuellen Offset in die Cache-Datei. Zeichnen Sie einige Offsets der Dex-Datei auf.

Das nächste, worüber wir sprechen müssen, ist der Prozess der Dex-Odexierung.


So erstellen Sie ein neues Projekt in Android

Hier wird die Verifizierung optimiert.

Sie können hier den Optimierungsprozess ändern und sogar die Optimierungsüberprüfung entfernen.

Denken
Woher kommen die Daten hier und wo kann man sie vergleichen? ·
Diese Daten werden in build.prop verglichen.

2. Optimieren Sie weiter

Lassen Sie uns die dvmContinueOptimization-Funktion weiterverfolgen.

PS:
Ich komme bald mit einem sehr wichtigen Ort in Kontakt, der sehr mit dem Beschuss zu tun hat #🎜 🎜 #

Öffnen Sie die dvmContinueOptimization-Funktion

So erstellen Sie ein neues Projekt in Android

Das erste ist ein Urteil.


So erstellen Sie ein neues Projekt in Android

Dann erfolgt ein Schreibvorgang in die Dex-Datei.

Dann lesen Sie weiter (der entscheidende Punkt kommt)


So erstellen Sie ein neues Projekt in Android

dvmDexFileOpenPartial, wenn Sie Nachdem ich die Shelling-Tutorials anderer Leute gelesen habe, muss ich wissen, dass dies der häufig verwendete Endpunkt ist. Ich wusste vorher nur, dass ich ihn herunterladen kann, aber jetzt weiß ich, dass diese Funktion im Quellcode vorhanden ist.

Lassen Sie uns den Aufruf der dvmDexFileOpenPartial-Funktion überprüfen

So erstellen Sie ein neues Projekt in Android

Es wird hier zweimal aufgerufen und einmal Es ist Ihr eigene Definition.

Werfen wir zunächst einen Blick auf den Prototyp von dvmDexFileOpenPartial

int dvmDexFileOpenPartial(const void* addr, int len, DvmDex** ppDvmDex)

Parameter 1: Geladen DEX-Datei Die Basisadresse im Speicher (also DEX.035)
Parameter 2: Die Dateilänge der geladenen DEX-Datei,
Parameter 3: Ausgabeparameter, die DEX-Datei wird in ein DvmDex konvertiert Struktur, die die Klassen-, Feld-, Methoden- und Zeichenfolgeninformationen der Dex-Datei enthält. Das Objekt, mit dem Dalivk die Dex-Datei betreibt, ist die Strukturstruktur


So erstellen Sie ein neues Projekt in Android

Schließlich werden hier die Header-Informationen geschrieben.


So erstellen Sie ein neues Projekt in Android

0x03 Analyse und Analyse von Android-DEX-Dateien

dvmRawDexFileOpen() Diese Funktion ist was Wir wollen die Schlüsselfunktion verstehen, die in der Funktion RawDexFile.cpp liegt.


So erstellen Sie ein neues Projekt in Android

Definieren Sie zunächst die Basisvariablen.


So erstellen Sie ein neues Projekt in Android

Wir alle wissen, dass eine sehr wichtige Sache im Dateiformat die magische Zahl ist, daher ist hier der erste Schritt, um die zu bestimmen magische Zahl, verifiziereMagicAndGetAdler32. Die Magie hier ist die magische Zahl.



So erstellen Sie ein neues Projekt in Android

Hier erfolgt die Überprüfung von Zeit und Dateigröße.


So erstellen Sie ein neues Projekt in Android

Diese Funktion ist eine Schlüsselfunktion und eine Funktion, auf deren Analyse wir uns konzentrieren möchten. Ihre Hauptfunktion ist die Generierung Die Odex-Datei, die Dex entspricht, ist die sogenannte Odexisierung. Lassen Sie uns die Funktion weiterverfolgen, um sie zu sehen.


So erstellen Sie ein neues Projekt in Android

Das Folgende ist Teil der Funktion dexOptGenerateCacheFileName(). Unsere Hauptsache ist, zu sehen, wo es ausgegeben wird.

So erstellen Sie ein neues Projekt in Android

Sie können hier sehen, dass es im Datenverzeichnis generiert wird, ALOGV("Cache-Datei für '%s' '%s ' ist '%s'", fileName, subFileName, nameBuf);

Dies ist das Format.

Das heißt, unsere Odex-Datei wurde hier generiert.

Als nächstes müssen Sie diese Funktion dvmDexFileOpenFromFd() weiter optimieren, die Zuordnung vervollständigen und als lesbare Datei festlegen. Öffnen Sie diese Funktion. Der Speicherort befindet sich in DvmDex.cpp.

So erstellen Sie ein neues Projekt in Android

Schauen wir uns zunächst an, wo diese Funktion aufgerufen wird.

So erstellen Sie ein neues Projekt in Android

Der Ort, an dem diese Funktion aufgerufen wird, ist unsere Schlüsselfunktion dvmRawDexFileOpen. Diese Funktion ruft zuerst dexOptGenerateCacheFileName auf, um Odex zu generieren, und ruft dann dvmDexFileOpenFromFd für eine weitere Optimierung auf.

Der letzte Schritt der Optimierung ist dexFileParse(), bei dem DEX analysiert wird. Dieser Speicherort ist eine kurze Zusammenfassung in DexFile

So erstellen Sie ein neues Projekt in Android

.

dvmRawDexFileOpen() Hauptsteuerfunktion – dexOptGenerateCacheFileName() generiert den entsprechenden Odex – dvmDexFileOpenFromFd() optimiert weiter – dexFileParse() analysiert Dex.

PS: Tipps

Wenn sich dexfileopenpartial im nächsten Abschnitt befindet, stellen Sie möglicherweise fest, dass es keine Möglichkeit gibt, es zu brechen. Dann können wir dexOptGenerateCacheFileNamePKcS0, dvmdexfileopenfromfd und andere Funktionen auswählen, um mit dem nächsten Abschnitt fortzufahren.

Im Allgemeinen ist dexfileopenpartial besser darin, Dinge mit Shells zu handhaben.

0x04 Android Dex-Klassenladevorgang

Andere Quellcodes werden von einer Hauptsteuerfunktion gesteuert, um die Ausführung anderer Schlüsselfunktionen zu steuern. Der Dex-Klassenladevorgang ist ebenfalls so.

Seine Hauptsteuerungsfunktion ist Dalvik_dalvik_system_DexFile_defineClassNative()


So erstellen Sie ein neues Projekt in Android

Es gibt auch eine Funktion, die Aufmerksamkeit erfordert, Dalvik_dalvik_system_DexFile_openDexFileNative

Hier ist zu beachten, dass es zwei Orte gibt, an denen Sie entsorgen können.


So erstellen Sie ein neues Projekt in Android

Schauen wir uns unsere Hauptsteuerungsfunktion an.

Einen solchen Aufruf gibt es in der Hauptsteuerfunktion.
So erstellen Sie ein neues Projekt in Android

Dieser Aufruf dient der Überprüfung des Cookies, aber es handelt sich bei diesem Cookie wahrscheinlich um das entschlüsselte Dex-Cookie, sodass Sie dieses Cookie auch hier ablegen können.

Dann schau nach unten.


So erstellen Sie ein neues Projekt in Android

dvmDefineClass-Funktion, diese Funktion ist eine Funktion zum Bestätigen des Klassenladens.

So erstellen Sie ein neues Projekt in Android

Die Funktion entscheidet selbst, aber was zurückgegeben wird, ist tatsächlich ein großer Kopf. Sehen wir uns diese Funktion weiter an, um sie zu sehen.

So erstellen Sie ein neues Projekt in Android

So erstellen Sie ein neues Projekt in Android

Das Wichtigste hier ist Clazz, die dynamisch geladene Klasse.

Sein Wert wird von der Funktion „loadClassFromDex“ zurückgegeben, daher werden wir einen weiteren Blick darauf werfen.

So erstellen Sie ein neues Projekt in Android

Sehen Sie sich hier eine solche Struktur an.

So erstellen Sie ein neues Projekt in Android

Werfen wir einen Blick auf die Details dieser Struktur.

So erstellen Sie ein neues Projekt in Android

Ist diese Struktur genau die gleiche wie die Struktur von Dex? Es zeigt, dass wir hier das finden, was wir brauchen.

Das obige ist der detaillierte Inhalt vonSo erstellen Sie ein neues Projekt in Android. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen