Maison  >  Article  >  Opération et maintenance  >  Comment créer un nouveau projet sous Android

Comment créer un nouveau projet sous Android

王林
王林avant
2023-05-29 23:37:241436parcourir

Contenu

1. Un tutoriel simple sur un outil utile (Insight)

Que pouvez-vous apprendre ?

Un logiciel d'assistant d'analyse super puissant.

2. Analyse du processus d'optimisation Android

Que pouvez-vous apprendre ?

1. Compréhension approfondie du processus d'optimisation d'Android
2. Observez de près le code source d'Android
2 Vous pouvez voir les fonctions dans la partie inférieure du déballage du grand patron

3. analyse

Que pouvez-vous apprendre ?

1. Autres fonctions pouvant être téléchargées
2. Le processus d'analyse des fichiers dex
3. Peu de connaissances sur le bombardement et la déconnexion

4.

1. Le processus complet de chargement des classes
2. Sélection de classes décompressées et renforcées


0x01 Un tutoriel simple sur un outil utile (Insight)

Ce logiciel dispose de fonctions auxiliaires puissantes pour analyser le code source c/c++ et java, nous l'utiliserons plus tard, nous donnerons donc une brève introduction.

Les outils sont disponibles en pièce jointe. Téléchargez et téléchargez simplement séparément.

SI3US-205035-36448

Un code d'enregistrement est fourni ici.

Installez, suivant, suivant et c'est tout.

Comment créer un nouveau projet sous Android
Créer un nouveau projet

Choisissez un nouveau projet.


Comment créer un nouveau projet sous AndroidMachine unique OK


Comment créer un nouveau projet sous Android
Choisissez la première


Comment créer un nouveau projet sous Android
Sélectionnez Ajouter un arbre, ce qui signifie les ajouter tous.


Comment créer un nouveau projet sous Android
Une fois le chargement terminé

Comment créer un nouveau projet sous Android
nous utiliserons ce logiciel pour l'analyse.

Analyse du processus d'optimisation Android

Je veux le dire un peu, maintenant je connais l'importance de l'anglais. Bien sûr, mon anglais n'est pas bon, mais je peux le rechercher dans le dictionnaire.


Comment créer un nouveau projet sous Android
1.extractAndProcessZip

Ne parlons pas d'abord du contenu, jetons un œil au nom de cette fonction. extraire : Extraire, et et, Processus de traitement Zip, format de fichier compressé, nous savons tous qu'apk est en fait un package compressé zip.

Ensuite, la signification de cette fonction est le processus d'extraction du zip.


Alors analysons-le étape par étape.


Comment créer un nouveau projet sous Android
Voici la définition de la variable intermédiaire de extractAndProcessZip. Ce n’est pas l’objet de notre recherche.


Comment créer un nouveau projet sous Android

DexClassVerifyMode verifyMode = VERIFY_MODE_ALL;

Cette phrase définit verifyMode, qui est le module de vérification. Les données initialisées ici sont VERIFY_MODE_ALL, ce qui signifie que tout est vérifié.

Réflexion

Si nous apportons des modifications ici, pouvons-nous ignorer cette vérification.

Regardons d'autres valeurs.


Comment créer un nouveau projet sous Android
Si vous avez une idée, vous pouvez définir vous-même cette valeur.

DexOptimizerMode dexOptMode = OPTIMIZE_MODE_VERIFIED;


Comment créer un nouveau projet sous Android
Continuons la lecture.


Comment créer un nouveau projet sous Android
Il existe une fonction appelée dexOptCreateEmptyHeader qui, comme son nom l'indique, crée un en-tête vide pour l'optimisation dex.


Comment créer un nouveau projet sous Android
dexOffset, enregistrez la position du fichier afin que nous puissions revenir ici plus tard, qui est en fait la position de départ de la lecture du fichier dex.

Regardons la fonction suivante.


Comment créer un nouveau projet sous AndroidOuvrez l'archive zip, recherchez l'entrée DEX.

Évidemment, cette partie sert à trouver le fichier dex à partir de l'apk.


Ensuite, analysez.


Comment créer un nouveau projet sous Android
Fonction pour extraire quelques décalages de dex.

Comment créer un nouveau projet sous Android

Extrayez les données DEX dans le fichier cache au décalage actuel. Enregistrez quelques décalages du fichier dex.

La prochaine chose à aborder est le processus de dex odexing.


Comment créer un nouveau projet sous Android

C'est là qu'intervient la vérification de l'optimisation.

Vous pouvez modifier le processus d'optimisation ici et même supprimer la vérification de l'optimisation.

Pensez à
d'où proviennent les données ici et où les comparer. ·
Ces données sont comparées dans build.prop.

2. Continuez à optimiser

Faisons le suivi de la fonction dvmContinueOptimization.

PS :
Nous sommes sur le point d'entrer en contact avec un endroit très important et très lié au déballage

Ouvrez la fonction dvmContinueOptimization

Comment créer un nouveau projet sous Android

La première chose est un jugement.


Comment créer un nouveau projet sous Android

Ensuite, il y a une écriture dans le fichier dex.

Alors continuez à lire (le point important arrive)


Comment créer un nouveau projet sous Android

dvmDexFileOpenPartial Si vous avez déjà vu les tutoriels de décompression d'autres personnes, vous devez savoir que c'est le point de terminaison fréquemment utilisé que je connaissais seulement pour le télécharger auparavant, mais maintenant je sais, cette fonction existe dans le code source.

Jetons un coup d'œil à l'appel de la fonction dvmDexFileOpenPartial

Comment créer un nouveau projet sous Android

Elle est appelée deux fois ici, et l'autre fois est sa propre définition.

Jetons d'abord un coup d'œil au prototype de dvmDexFileOpenPartial

int dvmDexFileOpenPartial(const void* addr, int len, DvmDex** ppDvmDex)
Paramètre 1 : L'adresse de base du fichier DEX chargé en mémoire (c'est-à-dire DEX. .035)
Paramètre 2 : La longueur du fichier DEX chargé,
Paramètre 3 : Paramètre de sortie, le fichier DEX est converti en une structure DvmDex, qui contient les classes, les champs, les méthodes et les informations de chaîne du fichier Dex. L'objet du fichier Dex d'exploitation de Dalivk est la structure de la structure


Comment créer un nouveau projet sous Android

Enfin, les informations d'en-tête sont écrites ici.


Comment créer un nouveau projet sous Android

0x03 Analyse et analyse de fichiers DEX Android

dvmRawDexFileOpen() Cette fonction est la fonction clé que nous devons comprendre, elle se trouve dans la fonction RawDexFile.cpp.


Comment créer un nouveau projet sous Android

Définissez d’abord les variables de base.


Comment créer un nouveau projet sous Android

Nous savons tous qu'une chose très importante dans le format de fichier est le nombre magique, voici donc la première étape pour déterminer le nombre magique, verifyMagicAndGetAdler32. La magie ici est le nombre magique.


Comment créer un nouveau projet sous Android

Voici la vérification de l'heure et de la taille du fichier.


Comment créer un nouveau projet sous Android

Cette fonction est une fonction clé, et c'est aussi une fonction sur laquelle nous devons nous concentrer sur l'analyse. Sa fonction principale est de générer le fichier odex correspondant à dex, qui est ce qu'on appelle l'odexisation. Suivons la fonction pour voir.

Comment créer un nouveau projet sous Android

Ce qui suit fait partie de la fonction dexOptGenerateCacheFileName(). Notre principal objectif est de voir où il est produit.

Comment créer un nouveau projet sous Android

Vous pouvez voir ici qu'il est généré dans le répertoire de données, ALOGV("Le fichier cache pour '%s' '%s' est '%s'", fileName, subFileName, nameBuf);
Il semble comme ce format.

C'est-à-dire que notre fichier odex a été généré ici.

La prochaine chose à faire est d'utiliser la fonction dvmDexFileOpenFromFd(), d'optimiser davantage, de compléter le mappage et de le définir comme fichier lisible. Ouvrez cette fonction. L'emplacement est dans DvmDex.cpp.

Comment créer un nouveau projet sous Android

Voyons d'abord où cette fonction est appelée.

Comment créer un nouveau projet sous Android

L'endroit où cette fonction est appelée est notre fonction clé dvmRawDexFileOpen. Cette fonction appelle d'abord dexOptGenerateCacheFileName pour générer odex, puis appelle dvmDexFileOpenFromFd pour une autre optimisation.

La dernière étape de l'optimisation est dexFileParse(), qui consiste à analyser DEX. Ce poste est un bref résumé dans DexFile

Comment créer un nouveau projet sous Android

.

Fonction de contrôle principale dvmRawDexFileOpen() - dexOptGenerateCacheFileName() génère l'odex correspondant - dvmDexFileOpenFromFd() optimise davantage - dexFileParse() analyse dex.

PS : Conseils

Lorsque dexfileopenpartial est dans la section suivante, vous constaterez peut-être qu'il n'y a aucun moyen de le casser, nous pouvons alors choisir dexOptGenerateCacheFileNamePKcS0, dvmdexfileopenfromfd et d'autres fonctions pour passer à la section suivante.

De manière générale, dexfileopenpartial est meilleur pour gérer les choses avec des shells.

0x04 Processus de chargement de la classe Android Dex

D'autres codes sources sont guidés par une fonction de contrôle principale pour guider d'autres fonctions clés à fonctionner. Le processus de chargement de la classe Dex est également comme ça.

Sa fonction de contrôle principale est Dalvik_dalvik_system_DexFile_defineClassNative()


Comment créer un nouveau projet sous Android

Il y a aussi une fonction qui nécessite une attention particulière, Dalvik_dalvik_system_DexFile_openDexFileNative

Ce qui doit être noté ici, c'est qu'il y a deux endroits où vous pouvez vider.


Comment créer un nouveau projet sous Android

Regardons notre fonction de contrôle principale.

Il existe un tel appel dans la fonction de contrôle principale.
Comment créer un nouveau projet sous Android

Cet appel vise à vérifier le cookie, mais ce cookie est probablement le cookie dex déchiffré, vous pouvez donc également vider ce cookie ici.

Alors regarde en bas.


Comment créer un nouveau projet sous Android

Fonction dvmDefineClass, cette fonction est une fonction pour confirmer le chargement de la classe.

Comment créer un nouveau projet sous Android

La fonction porte un jugement toute seule, mais ce qui est renvoyé est bien une grosse tête. Suivons cette fonction pour voir.

Comment créer un nouveau projet sous Android

Comment créer un nouveau projet sous Android

La chose la plus importante ici est clazz, qui est la classe chargée dynamiquement.

Sa valeur est renvoyée par la fonction loadClassFromDex, nous allons donc y jeter un œil plus approfondi.

Comment créer un nouveau projet sous Android

Voir une telle structure ici.

Comment créer un nouveau projet sous Android

Jetons un coup d'œil aux détails de cette structure.

Comment créer un nouveau projet sous Android

Cette structure est-elle exactement la même que la structure dex ? Cela montre que voici ce dont nous avons besoin.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer