Eine superleistungsfähige Analyseassistentensoftware.
1. Detailliertes Verständnis des Android-Quellcodes
2 Sie können die Funktion im unteren Teil sehen Boss' Shell
2. Der Prozess der Dex-Dateianalyse
3. Wenig Wissen über Shelling und Trennung
4. Analyse des Ladevorgangs der Android DEX-Klasse
0x01 Ein einfaches Tutorial zu einem nützlichen Tool (Einblick) #🎜 🎜#
Neues Projekt erstellen
Einzelspieler OK
Wähle den ersten eins
Wä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.
Ich möchte es sagen, jetzt weiß ich, wie wichtig Englisch ist, aber ich kann es in nachschlagen das Wörterbuch.
1.extractAndProcessZip
Dann ist die Bedeutung dieser Funktion der Prozess des Extrahierens von Zip.
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.
Denken
Wenn wir hier Änderungen vornehmen, können wir diese Überprüfung überspringen?
Schauen wir uns andere Werte an.
Wenn Sie eine Idee haben, können Sie diesen Wert selbst definieren.
DexOptimizerMode dexOptMode = OPTIMIZE_MODE_VERIFIED;
Schauen wir weiter nach unten.
Es gibt eine Funktion namens dexOptCreateEmptyHeader, die, wie der Name schon sagt, einen leeren Header für die Dex-Optimierung erstellt.
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.
Dieser Teil dient offensichtlich dazu, die Dex-Datei aus der APK zu finden.
Fahren Sie dann mit der Analyse fort.
Funktion zum Extrahieren einiger Dex-Offsets.
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.
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.
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 #🎜 🎜 #
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
Dies ist das Format.
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
dvmRawDexFileOpen() Hauptsteuerfunktion – dexOptGenerateCacheFileName() generiert den entsprechenden Odex – dvmDexFileOpenFromFd() optimiert weiter – dexFileParse() analysiert Dex.
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.
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()
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.
Schauen wir uns unsere Hauptsteuerungsfunktion an.
Einen solchen Aufruf gibt es in der Hauptsteuerfunktion.
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.
dvmDefineClass-Funktion, diese Funktion ist eine Funktion zum Bestätigen des Klassenladens.
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.
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.
Sehen Sie sich hier eine solche Struktur an.
Werfen wir einen Blick auf die Details dieser Struktur.
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!