3 votes

Existe-t-il un moyen d'appeler/invoquer une fonction Java (privée) dans une application ?

Existe-t-il un outil qui peut être utilisé dans le shell ADB ou quelque chose de similaire (sans la racine éventuellement) qui peut invoquer une fonction dans l'application, pendant qu'elle est en cours d'exécution ?

5voto

pr0nin Points 353

Appareil enraciné

Sur les appareils enracinés, les fonctions privées dans les applications peuvent être appelées assez facilement (dans la plupart des cas) en utilisant un outil tel que Frida . Frida est comme un mélange d'un "débogueur scriptable" et du framework Xposed avec la différence que vous n'avez pas à traiter le code de bas niveau comme les débogueurs réguliers et l'inconvénient de Xposed que lorsque vous changez votre code de script vous n'avez pas à redémarrer le téléphone entier.

Frida permet d'écrire du code JavaScript qui est exécuté dans l'application et vous disposez également d'un shell interactif pour trouver ou créer des instances de classe, appeler des fonctions, etc. Frida est un véritable couteau suisse pour la rétro-ingénierie et le débogage d'applications tierces.

Dispositif non enraciné

Sur un appareil non enraciné et une application qui est une version normale (pas une version de débogage), vous ne pouvez pas invoquer une fonction dans l'application sans modifier l'application. Par exemple, vous pouvez essayer de décompiler l'application en utilisant apktool modifiez le code Smali pour exécuter la fonction, par exemple si un certain bouton de l'interface utilisateur est pressé, puis recompilez et renvoyez l'application avec un nouveau certificat. Mais attention, Smali est un langage de très bas niveau - donc même si vous êtes familier avec Java et le développement Android, la modification du code Smali sera difficile.

0 votes

Si vous démissionnez d'une application, celle-ci ne s'installera pas sans avoir été entièrement supprimée, y compris les fichiers de l'application. Ou existe-t-il un moyen de les conserver, car j'aimerais préserver ces fichiers.

0 votes

@hiddenhospitalresearch C'est exact, il faut supprimer les données de l'application. Si vous installez l'application via adb, vous pouvez utiliser adb install -r <abc.apk> ce qui supprimera les données de l'application. Si l'application permet la sauvegarde via adb, vous pouvez essayer de sauvegarder les données de l'application en utilisant adb backup <packagename> (vérifier la taille du fichier .ab après succès = la taille du fichier est supérieure à 1KB) et après avoir remplacé l'application, restaurer les données de sauvegarde.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X