Toujours en prenant Dashen apk comme exemple, grâce à l'analyse précédente du script lua de décryptage de l'application, nous pouvons décrypter le script lua de Dashen apk. Décryptons maintenant ses ressources (fichiers de configuration et images, etc.). Nous prenons comme exemple le fichier de configuration le plus important. Avant de décrypter :
L'en-tête du fichier a également une valeur de signature : Fuckyou !. Voyant cela, nous avons d'abord réfléchi à la question de savoir s'il était également crypté avec xxtea. Nous avons d'abord utilisé la méthode ci-dessus pour le déchiffrer avec xxtea, puis nous l'avons décompressé. Une erreur s'est produite pendant l'opération. devons nier ce que nous venons de dire. Nous continuons à décrypter le fichier de configuration étape par étape.
Pensez-y un instant, l'en-tête du fichier est : va te faire foutre ! Si vous souhaitez décrypter le fichier, vous devez inévitablement traiter la chaîne : va te faire foutre ! , nous devrions donc pouvoir rechercher la chaîne putain dans idaPro, puis utiliser la fonction d'analyse, de débogage et de décryptage dans le segment de code où se trouve la chaîne putain. Ouvrez idaPro et ouvrez la vue chaîne, recherchez "fuckyou" pour vérifier notre hypothèse
Rien ! Je suppose que l'optimisation a été effectuée et que la chaîne a été optimisée quelque part.好 Les indices sont brisés, mais la curiosité nous permet toujours de continuer. À ce stade, nous pouvons parcourir le code source du framework Cocos2D et combiner certaines informations sur Internet, et constater que le traitement Cocos2D du fichier est encapsulé dans la classe CCFileUtils : il y a beaucoup de fonctions de
, il y a beaucoup de fonctions, il y a beaucoup de fonctions, et il y a beaucoup de fonctions, et il y a beaucoup de fonctions, et il y a beaucoup de fonctions, et il y a beaucoup de fonctions.不一一贴了,从网上也找到了前辈的经验:
好了,我们现在回到idaPro,在export窗口,搜索getData:
进这两个函数,反编译看Le prochain ne le fait pas Cela ne se ressemble pas beaucoup, alors ignorez-le, mais notez-le d'abord. Nous pouvons faire une pause ici lors du réglage dynamique.
Regardons à nouveau getFileData : Puisque l'application fonctionne sur la plateforme Android, regardons le CCFileUtilsAndroid::getFileData de la plateforme Android :
Le code est très long et incomplet, l'élément clé de cette fonction. : En voyant la photo ci-dessus, j'ai l'impression que c'est ça, haha ! Mais nous devons encore continuer à analyser et à vérifier. Lorsque la fonction traite le signe dans l'en-tête du fichier, elle ne le compare pas directement avec les caractères mais les compare un à un avec leurs valeurs ASCII, on ne peut donc pas trouver fuckyou dans la fenêtre de chaîne ! de. Regardez ensuite vers le bas, lorsque la fonction détermine que le texte est conforme au format crypté, elle supprimera les 8 premiers octets (va vous faire foutre !), puis effectuera une opération XOR avec la valeur dans la table XOR, en boucle tous les 256 octets. T Nous pouvons regarder BYTE_A1C55F : À ce stade, nous pouvons essentiellement déterminer la fonction et le processus de décryptage des fichiers. Nous pouvons déboguer dynamiquement, puis confirmer que lorsque l'application appelle cette fonction, la mémoire doit contenir du contenu clair. mémoire. . Lorsque nous déboguons, nous interrompons au début et à la fin des fonctions getData et CCFileUtilsAndroid:doGetFileData : :Bien que les deux fonctions soient interrompues, elles ne s'arrêtent qu'au point d'arrêt doGetFileData, ce qui signifie que la fonction doGetFileData est utilisée pendant le processus de décryptage, ce qui est conforme à nos attentes. Jetons un coup d'œil aux registres et à la mémoire :
.
Il s'avère que le contenu avant doGetFileData est du texte chiffré et qu'il a été déchiffré en texte brut avant le retour de la fonction. Cela montre que notre analyse précédente est correcte.
D'accord, maintenant, nous pouvons copier la table XOR byte_A1C55F, puis imiter le processus de décryptage de l'application (vous pouvez trouver un script de décodage xor sur GitHub et le modifier légèrement) et écrire un petit outil pour décoder le master.apk All les ressources ont été décryptées :
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!