2011-01-30 5 views
1

Je suis actuellement en train de développer une application pour une entreprise qui comprend le livescoring. Les fichiers XML auxquels j'accède (sur le net comme: "http://company.com/files/xml/livescoring.xml") ne sont pas destinés à être publics et ne devraient être connus que de moi. Je me demandais si quelqu'un pouvait décoder le fichier .apk et lire mes fichiers .java d'origine (qui incluent le lien vers les fichiers XML). J'ai donc renommé le fichier .apk en .zip et j'ai pu accéder à "classes.dex", qui semblait inclure les fichiers .java (ou classes). Googling m'a conduit à un outil nommé "AvaBoxV2" qui décode ce fichier "classes.dex". Maintenant, j'ai un dossier contenant un dossier "out" où les fichiers nommés .smali existent. J'opte l'un d'entre eux avec un éditeur et enfin il y a le lien vers le fichier xml. Pas bon. :(Android: fichiers .java lisibles à partir du fichier .apk?

est-il un moyen de chiffrer mon application ou le fichier classes.dex? Je ne veux pas dire que la société, que tout le monde peut accéder aux fichiers XML d'origine. Peut-être que la signature de l'application aide probablement

?

aussi, savez-vous vraiment Noob convivial tutoriel pour préparer des applications (signature, versioning, ...) pour Google Market?

Merci à l'avance!

+1

peu importe * quelles * mesures que vous prenez quelqu'un peut toujours obtenir obtenir de telles informations. aucun code, actif ou communication réseau que vous créez est privé. La question que vous devez vous poser, ou qui vous donne des exigences, est de combien d'heures de travail ils veulent perdre du code pour protéger ces fichiers XML. –

Répondre

6

Le code source .java ne figure pas dans l'APK

Il est possible de démonter le D alvik bytecode en bytecode mnemonics en utilisant un outil comme baksmali, mais il n'y a aucun moyen pour un utilisateur de récupérer la source .java d'origine.

De plus, vous pouvez utiliser un outil comme proguard (inclus dans le SDK Android) pour obscurcir votre code d'octet, ce qui rend difficile l'interprétation du comportement du bytecode démonté. Vous pouvez également créer des petites astuces, comme stocker la chaîne de liens sous une forme obfusquée, puis la désobstruer lors de l'exécution dans votre application (un exemple simple serait d'utiliser l'encodage en base 64, mais quelqu'un pourrait probablement inverser cela rapidement s'ils le voulaient). Cela dit, il est assez trivial pour quelqu'un d'exécuter tcpdump et de sniffer le trafic réseau entre votre appareil et le serveur, et obtenir l'URL de cette manière, donc il n'y a aucun moyen d'empêcher complètement quiconque d'obtenir cette valeur.

2

Oui, il est impossible d'empêcher complètement quelque chose comme ça. C'est la même chose sur une application de bureau, ou toute autre application. Comme mentionné précédemment, l'obscurcissement aidera, mais les personnes qui persistent peuvent toujours le dépasser. Surtout pour quelque chose comme une url comme ça. Une solution pour rendre les choses beaucoup plus compliquées pour les pirates est d'utiliser PHP sur votre serveur web et une sorte de système de token pour déterminer si la requête provient de votre application ou pas ... Cela devient un peu difficile, donc je ne le suggère pas vraiment.

+0

+1. Les tableaux d'affichage non traçables sont * très * difficiles à implémenter d'une manière non-intrusive. Votre meilleur pari est d'utiliser un service de tableau de bord existant, car ils vont consacrer beaucoup de temps à rendre plus difficile à usurper. –

+0

Merci beaucoup pour vos réponses! Je lis juste les livescores des jeux sportifs exlusively mis à jour par ma compagnie dans ces dossiers de xml.Je suis désolé que je ne l'ai pas précisé assez exactement. :) Le seul but est d'éviter que d'autres applications utilisent ces xmls livescoring. J'ai donc pensé que je pouvais empêcher cela, mais je réalise que ce n'est pas possible. Merci beaucoup à tous :) – Rainer

Questions connexes