Cliquez dessus ↑ ↑ ↑ mot bleu [ protocole analyse et restauration ] pour nous suivre
" Apprenez l'algorithme inverse du jeu unity3d. "
Tout le monde devrait avoir l'impression qu'avant d'analyser l'application épinards, j'ai écrit l'inverse d'un simple jeu cocos2d :
Décryptage du format de fichier jsc du jeu Cocos2d, aventure SpideMonkey
Application de jeu Audi Chess and Cards Protocol Analyse et secret des fissures
Analyse et craquage du protocole de cryptage de Tuyou Doudizhu
Récemment, je suis entré en contact avec la rétro-ingénierie de certains jeux Unity3D. C'est une autre branche du jeu. J'aimerais vous en faire part ici. Cet article est une description purement technique, et j'ai l'occasion d'en discuter avec le jeu réel.
En parlant d'Unity3D, il s'agit d'un moteur de jeu très largement utilisé, bien sûr, qui ne se limite pas aux jeux. De nombreux jeux sur le marché utilisent ce moteur et le site officiel indique que les téléchargements mensuels de jeux Unity3D se comptent par milliards.
Par exemple ce jeu :
Et IL2CPP est le cœur du moteur de jeu Unity3D actuel. Pour plus de détails, veuillez vous référer aux articles connexes. Je n'écrirai pas en détail ici. Pour l'ingénierie inverse des jeux, IL2CPP inclut l'algorithme d'implémentation spécifique du jeu. L'analyse d'un jeu est essentiellement dans le Pour analyser la bibliothèque IL2CPP, par exemple, sur la plateforme Android, il s'agit d'analyser libil2cpp.so.
01
—
comment analyser
Pour les jeux Unity3D sur la plate-forme Android, vous verrez le répertoire et les fichiers assert/bin/Data suivants après décompression :
Parmi eux, global-metadata.dat est le corps principal du fichier de ressources et établit une relation avec le fichier dont la valeur de hachage est le nom ci-dessous.
De plus, il existe le fichier de bibliothèque libil2cpp.so dans le répertoire de la bibliothèque so :
Ce fichier est équivalent à l'implémentation spécifique du jeu, qui lit global-metadata.dat, et accède au fichier nommé par la valeur de hachage pour obtenir des ressources telles que des chaînes.
Généralement, l'inverse du jeu Unity3D d'IL2CPP n'a besoin d'être effectué qu'en fonction de global-metadata.dat et libil2cpp.so. En théorie, vous pouvez toujours trouver la fonction d'algorithme souhaitée en regardant les fonctions de la bibliothèque libil2cpp.so une par un. .
Bien sûr, il n'est pas nécessaire de le regarder comme ça, hehe.
Pour les jeux IL2CPP Unity3D non durcis, il existe un outil très pratique - Il2CppDumper, qui est très simple à utiliser, et peut coopérer avec IDA pour rendre le nom de la fonction significatif, plus sub_xxx monotone, peut accélérer la vitesse de positionnement, bien sûr, vous Il peut également être utilisé avec des outils NET tels que ILSpy.
Il y a plus de personnes engagées dans l'ingénierie inverse, et le jeu Unity3D d'IL2CPP est entré dans l'ère du renforcement. Il existe souvent deux méthodes de cryptage, l'une est l'emballage de libil2cpp.so, et l'autre est le cryptage de global-metadata.dat , qui devient C'est compliqué, il n'y a pas de règle définie, il faut suivre pas à pas, pas à pas, ça prend beaucoup de temps et d'énergie, si ce n'est pas un gros jeu, l'analyse est un peu peu économique, donc j'ai gagné pas développer ici.
02
—
quelques mots d'expérience
De nombreux jeux IL2CPP ont une logique d'implémentation similaire. Ils sont tous transportés par HTTP ou HTTPS, et les paramètres d'URL ont une somme de contrôle. Ce type est généralement MD5 avec du sel, mais le sel est légèrement différent. Si vous pouvez utiliser Il2CppDumper, il vous suffit de trouver la fonction MD5 appropriée et de l'accrocher Utiliser Frida suffit, comme ceci :
Si Il2CppDumper n'est pas disponible et que global-metadata.dat est à nouveau crypté, mais que libil2cpp.so n'est pas compressé, vous pouvez convertir tous les libil2cpp.so en pseudocode, puis rechercher le texte intégral en fonction du numéro caractéristique de l'algorithme, swish quelques fois, vous pouvez localiser où vous en avez besoin, bien sûr, vous devez être patient.
C'est tout pour ça, c'est assez ennuyeux, j'espère que ça pourra être utile à tout le monde.
N'oubliez pas de cliquer sur "Regarder", "J'aime" et "Partager"
La nouvelle règle, pour recevoir les tweets à temps, vous devez d'abord mettre en vedette le compte officiel
N'oubliez pas de jouer ou vous manquerez
Appuyez longuement pour suivre et communiquer tout le temps.