FR - EN
Ma grand-mère était habituée à jouer à ce jeu depuis longtemps. Mais EA a décidé pour des raisons obscures de basculer le jeu vers un autre modèle (+ coloré, + jeune, + cher 🤡). Cette décision a bouleversé pas mal d'utilisateurs, des pétitions ont même été lancées. En vain. Le premier jeu est devenu inutilisable. Avec une popup qui renvoit directement vers la nouvelle application.
Je n'avais jamais fait de Reverse Engineering de ma vie, et cela m'a permis de découvrir pas mal d'outils intéressants.
Et surtout, ma grand-mère peut toujours jouer à son jeu 🤠
Après vidage du cache et des données de l'application, celle-ci refonctionne jusqu'à la fin du tutorial. Après ça, il est impossible de créer une partie contre l'IA. Toutes les actions sont bloquées car le jeu n'arrive pas à contacter les serveurs du jeu, fermés depuis.
Je suis parti dans l'idée de trouver une solution pour que le jeu pense que je suis connecté à ses serveurs.
- La dernière version de l'APK Scrabble (5.36.0.938)
- APKTOOL => Décompilation + recompilation de l'APK
- dnSpy => Décompilation / Recompilation des DLL
- Keytool + jarsigner du Android SDK => Génération d'un certificat perso + signature de l'APK
apktool d <nom_de_l'APK>.apk
Path des ressources / DLL de Unity
assets > bin > Data > Managed
Ce sont ces DLLs que nous allons modifier.
Le DLL cible sera Assembly-CSharp.dll. C'est lui qui contient le code qui nous intéresse.
- Ouverture de ce fichier avec le logiciel dnSpy.
- Navigation dans la classe NetworkState, pour modifier les fonctions visées.
- Faire en sorte que ces méthodes renvoient toujours true.
- Sauvegarder
- Recompiler l'APK via APKTOOL
apktool b <dossier_de_decompilation>
- L'APK générée se trouve dans le dossier dist
Dans l'état, l'APK ne peut pas être installée. Elle doit être signée.
- Générer un certificat / keystore personnel
keytool -genkey -keystore keystore.jks -alias scrabble_certificate -keyalg RSA -sigalg SHA256withRSA -validity 2000 -keysize 2048
// -alias => A vous de le choisir
// -validity => A vous de le choisir
- Signer l'application avec ce nouveau certificat
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore keystore.jks <apk_a_signer>.apk scrabble_certificate
- Dans un émulateur, glisser / déposer l'APK.
- L'installation se lance
- Vous pouvez lancer une partie contre l'IA.
Nous avons maintenant la possibilité de re-jouer à ce jeu. Mais ce hack n'est pas optimal 🤡 En effet, l'icône de connexion est toujours présent à l'écran (voir captures), mais le jeu reste fonctionnel !