Reverse engineering de l'API HTTP derrière une app android

Ces dernières 24h, j'ai eu cette lubie stupide de vouloir utiliser l'API Tickets Restaurant. Une API qui n'est pas documentée. Dont le site est en ASP.NET (beurk). Qui a une app officielle android.

Ahah !

Bref, j'ai tenté de reverse-engineer un APK alors que je n'ai même pas de smartphone 🤦

reverse engineer

Au passage, je recommande vivement apktool, pour extraire le contenu d'un APK, et jadx pour décompiler le bytecode Dex en du code Java à peu près correct. En tout cas, même s'il fait un peu plus d'erreurs (oublis de déclarations de variables par exemple), il produit un code bien plus clair que JD-GUI (il extrait même les noms de variables !), et l'interface graphique est bien pratique.

Le résultat au final ?

Ninja smoke bomb fail

Un bon gros fail.

Alors oui, j'ai eu la joie de réduire plusieurs milliers de lignes de Java très répétitives et pleines de fautes à une centaine de lignes de Python. Et c'était super fun de voir mes appels à cette fichue API SOAP retourner des erreurs incompréhensibles d'un backend visiblement en Ruby On Rails.

Mais au final, pas moyen de récupérer mon solde programmatiquement 😢

Au final j'en viens vraiment à douter que cette app fonctionne, surtout vu les avis dessus sur le store Google Play. Donc si quelqu'un avec un ordinateur de poche pouvait me le confirmer, ça me ferait bien plaisir ! :D

[EDIT] : un intéressant article récent sur le sujet : Reverse Engineering Nike Run Club Android App Using Frida - Yasoob Khalid