Comment créer un nouveau projet sous Android
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.
Créer un nouveau projet
Choisissez un nouveau projet.
Machine unique OK
Choisissez la première
Sélectionnez Ajouter un arbre, ce qui signifie les ajouter tous.
Une fois le chargement terminé
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.
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.
Voici la définition de la variable intermédiaire de extractAndProcessZip. Ce n’est pas l’objet de notre recherche.
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.
Si vous avez une idée, vous pouvez définir vous-même cette valeur.
DexOptimizerMode dexOptMode = OPTIMIZE_MODE_VERIFIED;
Continuons la lecture.
Il existe une fonction appelée dexOptCreateEmptyHeader qui, comme son nom l'indique, crée un en-tête vide pour l'optimisation dex.
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.
Ouvrez l'archive zip, recherchez l'entrée DEX.
Ensuite, analysez.
Fonction pour extraire quelques décalages de dex.
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.
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
La première chose est un jugement.
Ensuite, il y a une écriture dans le fichier dex.
Alors continuez à lire (le point important arrive)
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
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
Enfin, les informations d'en-tête sont écrites ici.
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.
Définissez d’abord les variables de base.
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.
Voici la vérification de l'heure et de la taille du fichier.
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.
Ce qui suit fait partie de la fonction dexOptGenerateCacheFileName(). Notre principal objectif est de voir où il est produit.
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.
Voyons d'abord où cette fonction est appelée.
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
.
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()
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.
Regardons notre fonction de contrôle principale.
Il existe un tel appel dans la fonction de contrôle principale.
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.
Fonction dvmDefineClass, cette fonction est une fonction pour confirmer le chargement de la classe.
La fonction porte un jugement toute seule, mais ce qui est renvoyé est bien une grosse tête. Suivons cette fonction pour voir.
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.
Voir une telle structure ici.
Jetons un coup d'œil aux détails de cette structure.
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Ces derniers jours, Ice Universe n'a cessé de révéler des détails sur le Galaxy S25 Ultra, qui est largement considéré comme le prochain smartphone phare de Samsung. Entre autres choses, le fuyard a affirmé que Samsung prévoyait d'apporter une seule mise à niveau de l'appareil photo.

OnLeaks s'est désormais associé à Android Headlines pour offrir un premier aperçu du Galaxy S25 Ultra, quelques jours après une tentative infructueuse de générer plus de 4 000 $ auprès de ses abonnés X (anciennement Twitter). Pour le contexte, les images de rendu intégrées ci-dessous h

En plus d'annoncer deux nouveaux smartphones, TCL a également annoncé une nouvelle tablette Android appelée NXTPAPER 14, et sa taille d'écran massive est l'un de ses arguments de vente. Le NXTPAPER 14 est doté de la version 3.0 de la marque emblématique de panneaux LCD mats de TCL.

Ces derniers jours, Ice Universe n'a cessé de révéler des détails sur le Galaxy S25 Ultra, qui est largement considéré comme le prochain smartphone phare de Samsung. Entre autres choses, le fuyard a affirmé que Samsung prévoyait d'apporter une seule mise à niveau de l'appareil photo.

Le Vivo Y300 Pro vient d'être entièrement dévoilé et c'est l'un des téléphones Android de milieu de gamme les plus fins avec une grande batterie. Pour être exact, le smartphone ne fait que 7,69 mm d'épaisseur mais dispose d'une batterie de 6 500 mAh. C'est la même capacité que le lancement récent

Motorola a lancé d'innombrables appareils cette année, même si seuls deux d'entre eux sont pliables. Pour le contexte, alors que la plupart des pays du monde ont reçu la paire sous le nom de Razr 50 et Razr 50 Ultra, Motorola les propose en Amérique du Nord sous le nom de Razr 2024 et Razr 2.

Samsung n'a pas encore donné d'indications sur la date à laquelle il mettrait à jour sa série de smartphones Fan Edition (FE). Dans l’état actuel des choses, le Galaxy S23 FE reste l’édition la plus récente de la société, ayant été présentée début octobre 2023. Cependant, de nombreux

Le Redmi Note 14 Pro Plus est désormais officiel en tant que successeur direct du Redmi Note 13 Pro Plus de l'année dernière (375 $ sur Amazon). Comme prévu, le Redmi Note 14 Pro Plus est en tête de la série Redmi Note 14 aux côtés du Redmi Note 14 et du Redmi Note 14 Pro. Li
