Pour une application Android qui exécute POST requêtes (JSON) sur SSL et reçoit un objet JSON en réponse, à quel point est-il difficile d'obtenir la réponse JSON) ?
Est-ce le moyen le plus simple de décompiler l'application pour obtenir la demande et l'envoyer et voir quelle est la réponse?
Quelle est la manière la plus simple et quelles sont les techniques qui peuvent être utilisées pour la rendre plus difficile?
Tout dépend de l'application elle-même et du type de mesures de sécurité mises en œuvre. En supposant que les demandes sont envoyées via HTTP (s), le moyen le plus simple consiste à utiliser un proxy tel que Burp. Vous devrez installer un certificat CA sur votre appareil mobile. Vous pourrez voir les demandes et les réponses dans le logiciel proxy (Burp).
APP <----> proxy <----> server
Si l'application utilise l'épinglage SSL/TLS, la solution ci-dessus ne fonctionnera pas immédiatement. Certaines fonctions effectueront des vérifications supplémentaires sur le certificat, vous devrez modifier ces fonctions afin de les contourner. En règle générale, il existe deux manières:
Une deuxième solution est de ne pas utiliser de proxy du tout! Habituellement, une bibliothèque client HTTP est utilisée pour effectuer de telles demandes. Vous pouvez accrocher les fonctions de requête HTTP et imprimer le contenu directement.
APP <----> server
^-> hooked functions which prints the requests
La deuxième solution peut être utile lorsque l'application n'utilise pas de requêtes HTTP standard. Certaines applications utilisent des protocoles binaires comme un gRPC, il serait plus facile de connecter la fonction myclient_post(jsonData)
et d'imprimer les paramètres + la réponse, que de rétroconcevoir le protocole binaire, de configurer un proxy, etc.
Quelques liens qui pourraient être utiles: