Fichier APK

Résolu/Fermé
coconiut Messages postés 42 Date d'inscription dimanche 30 juin 2002 Statut Membre Dernière intervention 25 septembre 2021 - 10 août 2013 à 16:15
ryko1820 Messages postés 1645 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 15 août 2021 - 10 août 2013 à 20:55
Bonjour,

Peut on ouvrir un fichier APK dans eclipse et le "bidouiller" par la suite avec du code java où le fichier est il déjà compilé ?
merci
A voir également:

3 réponses

ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
10 août 2013 à 16:20
Salut, oui les apk contiennent déjà du java compilé, modifié sous forme de bytecode pour la machine vituelle d'Android, Dalvik.

Directement c'est pas modifiable dans éclipse, mais il existe un projet, dex2jar, qui permet de convertir les apk en jar, avec du java normal dedans, qu'il faudra par la suite décompiler avec par exemple JD.

Je tient à préciser que la décompilation et modification est illégale si tu t'as pas le droit de le faire (licence qui l'interdit; sauf si autorisation de l'auteur). C'est légal si la licence le dit, ou que c'est un logiciel libre (décompiles pas alors, cherches la source).
3
ryko1820 Messages postés 1645 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 15 août 2021 276
Modifié par ryko1820 le 10/08/2013 à 21:36
Hello,

En vertu du code de la propriété intellectuelle (et plus précisément de l'article Art. L. 122-6) on trouvera ce que l'on a le droit de faire en France en matière de rétroingénierie ... En clair, cela dépends surtout des CLUF de chaque programme ...

Ceci-dit, cela fait maintenant quelques jours que j'ai mon premier terminal Androîd et je n'ai pu m'empêcher de "patcher" un programme que j'aime bien mais dont le fonctionnement normal ne me satisfaisait pas, et c'est vraiment très simple ...

Comme avant d'essayer je n'y connaissais rien et que c'est quand même un comble pour un informaticien de ne pas savoir comment marche sa machine, je vous met le résultat de mes expérimentations fructueuses en espérant que cela fera gagner du temps aux autres.

Un .apk est en fait un fichier compressé (que l'on peut décompresser avec 7zip par exemple) et qui contient entre autres un fichier classes.dex (qui est le fichier java compilé, le coeur de l'application), des fichiers de ressources nécessaires au programme (des .pcm, des .txt, des base de données, etc ...) et un répertoire manifest qui est utilisé lors de l'installation et qui contient la signature (date, checksum, etc ...) des fichiers de l'apk.

J'ai pour ma part utilisé baksmali / smali (sans wrapper : en ligne de commande) pour réaliser la décompilation puis recompilation et ils m'ont vraiment donné entière satisfaction ... (Ayant le SDK android d'installé je ne peut confirmer si il est nécessaire ou inutile pour l'utilisation de ces programmes java).

C'est bien évidemment le fichier classes.dex de l'apk que l'on décompile avec baksmali.

java -jar baksmali-2.0b5.jar classes.dex

Comme avec tous les décompilateurs on obtient pas un vrai code source lisible, joliment écrit et commenté mais une masse de petits fichiers xxx.smali (suivant la complexité de son programme) dans un répertoire "out" qu'il faut ensuite analyser un par un, pour trouver ce que l'on veut modifier.

Une fois les modifications réalisées il ne reste plus qu'a recompiler avec smali.

java -jar smali-2.0b5.jar out -o new_classes.dex
Un nouveau fichier classes.dex est produit. On remplace dans l'apk l'ancien, par le nouveau ...

On autorise les apk non market dans la configuration de sa machine.

Eventuellement on resigne l'appli (car la taille du .dex ayant changé son checksum (dans le répertoire manifest) n'est plus correcte) avec testsign , autosign ou autre (On désinstalle l'appli d'origine), on installe l'appli. customisée

... et si on a assuré, elle fonctionne toujours et cette fois, de la façon que l'on souhaite ...
1
coconiut Messages postés 42 Date d'inscription dimanche 30 juin 2002 Statut Membre Dernière intervention 25 septembre 2021 2
10 août 2013 à 18:27
Merci gravgun,
je m'explique, beaucoup de sites proposent de programmer des applications android sans connaissances en programmation sur leurs serveurs et génère un fichier apk que l'on peut enregistrer sur pc ou mobile et ainsi le tester. J'ai réalisé une application que je voudrais personnelle, ne pas la publier et la garder sur mon mobile. Mais je voudrais modifier cette application et pouvoir la bidouiller...
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
10 août 2013 à 19:09
Tout dépends des conditions d'utilisation du site, ils peuvent aussi bien autoriser la modification car c'est ton appli que l'interdire car l'APK contient du code qui leur appartient.
Regardes les conditions, c'est forcément stipulé quelque part.
0