Plusieurs sites proposent des téléchargements APK ( 1 , 2 , ). Existe-t-il un moyen de déterminer si un site Web/apk donné est sûr à installer?
Je pense que la façon la plus approfondie de tester des applications tierces est de:
adb devices
Vous pouvez analyser ce qui se passe sur l'appareil à l'aide de différents journaux qui s'exécutent en permanence. Celles-ci peuvent être difficiles à capturer, mais vous pouvez capturer le logcat
de votre appareil avec adb logcat
. Vous pouvez apprendre à utiliser Logcat comme un pro .
Le Android Virtual Device (AVD) utilise votre connexion Internet comme une connexion Wi-Fi. À ce stade, vous pouvez effectuer toutes sortes d'analyses. Mon message sur comment analyser les logiciels malveillants pourrait être utile (en ce qui concerne les outils et les techniques à utiliser). Wireshark sera un outil utile pour analyser le trafic réseau. Voir ce que l'application avec ses connexions réseau.
Alors maintenant, vous allez commencer à voir exactement ce que fait l'APK. Pour cela, vous aurez besoin de quelques outils. Voici un outil en ligne (je ne l'ai pas utilisé) qui prétend décompiler un Android APK de nouveau dans son Java code. Si vous souhaitez comprendre le processus et le faire vous-même, je regarderais cette réponse Stack Overflow .
Un APK n'est qu'un fichier .Zip
. Donc, les étapes (avec les outils de cette réponse Stack Overflow)
unzip example.apk
Nous avons maintenant les fichiers et répertoires suivants:
-rw-rw-r-- 1 3708 Oct 14 2013 AndroidManifest.xml
-rw-rw-r-- 1 2751916 Oct 14 2013 classes.dex
drwxrwxr-x 2 4096 Aug 3 12:12 META-INF
drwxrwxr-x 23 4096 Aug 3 12:12 res
-rw-rw-r-- 1 363640 Oct 14 2013 resources.arsc
Le classes.dex
Est ce que nous voulons. Il contient toutes les classes Java utilisées pour l'application.
./d2j-dex2jar.sh ../example.apk
Nous avons maintenant un fichier JAR ./example-dex2jar.jar
Qui peut être décompilé en Java. Voici où JD-GUI et ApkTool peuvent être utiles. Maintenant, vous pouvez regarder le code exact qui est exécuté par l'APK.
Gardez à l'esprit que certaines parties (sinon la plupart) du code Java seront obscurcies. Ceci est courant et vous verrez souvent des symboles de fonction arrachés et remplacés par a
, b
, etc. Non seulement des fonctions, mais des packages, des méthodes, des variables. Voir obscurci Java comme z = (a) b.d()
ne serait pas rare. Mais vous pouvez voir les chaînes, les importations typiques et toutes les fonctions d'objets partagés JNI qu'ils peuvent utiliser.
Tout cela étant dit. Voulez-vous le faire pour chaque application que vous téléchargez? Probablement pas. Il s'agit de savoir si vous faites confiance au magasin que vous utilisez et/ou à la société de logiciels qui a mis l'application. Personnellement, je n'utilise aucune application en dehors du Google Play Store. Les applications que je télécharge sont basées sur les entreprises qui les ont développées, les avis des utilisateurs (ceux-ci peuvent être truqués), les recommandations d'amis/forums, etc.
Vous devez faire confiance à l'application que vous téléchargez ou analyser chaque application que vous installez. Quoi qu'il en soit, vous devez faire preuve de prudence.
Pour vérifier si un fichier APK est sûr, vous pouvez le télécharger sur, par exemple. Virustotal . Il utilisera un tas de scanners de virus pour détecter si quelque chose ne va pas avec l'APK.
Remarque que les fichiers APK sont (au moment de la rédaction) le type de fichier n ° 1 en cours d'analyse par Virustotal.