[JAVA] valeur par défaut d'Android: exporté


Android Manifest Android: exporté On dit que s'il n'est pas spécifié, il ne sera pas toujours par défaut sur android: exporté = "faux".

Conclusion

Il est plus sûr de spécifier explicitement tous les attributs exportés

Raison

Parce qu'il peut être publié par inadvertance dans une application externe

  1. Si l'activité exportée n'est pas spécifiée, vrai / faux est déterminé par la présence ou l'absence de la définition du filtre d'intention. --Intent-filter défini: android: exporté = "true" (publié sur des applications externes) --Intent-filter non défini: android: exporté = "false" (privé pour les applications externes)

Si vous définissez par inadvertance un filtre d'intention sans spécifier exporté, L'activité peut également être lancée depuis une application externe. image.png

En outre, l'intention implicite lancée pour activer l'activité sera également reçue par des applications externes. image.png

  1. La valeur par défaut du fournisseur exporté se comporte différemment selon la version du système d'exploitation.
    --Vrai par défaut jusqu'à Android 4.2 (niveau API 17)

Si vous spécifiez par inadvertance exporté et incluez minSdkVersion 17 ou moins Public / privé changera en fonction de la version du système d'exploitation.

Je ne pense pas que ce soit un problème si je ne vois pas AndroidManifest.xml. .. ..

Jetez un œil à AndroidManifest.xml, une application sur Google Play.

  1. Installez l'application que vous souhaitez voir Android Manifest sur votre appareil Android

  2. Vérifiez le nom du package de l'application sur Google Play Vous pouvez le vérifier avec l'URL de la page de l'application https://play.google.com/store/apps/details?id=【target package name】

  3. Vérifiez le chemin complet avec la commande adb

>adb shell pm list packages -f 【target package name】 package:/data/app/【target package name】-1/base.apk=【target package name】

  1. Tirez apk sur PC en utilisant adb

> adb pull /data/app/【target package name】-1

  1. Changez l'extension d'apk en zip image.pngimage.png

  2. Extraire sous forme de zip

  3. Convertissez AndroidManifest.xml en zip avec AXMLPrinter2.jar AXMLPrinter2.jar

>java -jar AXMLPrinter2.jar AndroidManifest.xml > AndroidManifestConverted.xml

  1. Dans l'élément \ <activity > autre que android.intent.category.LAUNCHER après la conversion, Recherchez des activités avec exporté = "vrai" ou des activités pour lesquelles le filtre d'intention est défini sans description de exporté. Je pense qu'il est facile de le trouver dans les applications avec peu d'expérience et d'évaluation </ font>

  2. Essayez d'appeler depuis une autre application

MainActivity.kt


        val targetPackageName : String = "【target package name】"
        val targetActivityName : String = "【target activity name】"

        val intent : Intent = Intent()
        intent.setClassName( targetPackageName, targetActivityName )
        startActivity( intent )

Également possible ici

adb am start -n 【target package name】/.【target activity name】

Puis l'activité démarre normalement S'il est supposé que cette activité est appelée uniquement par un processus spécifique du même package,
il peut ignorer le processus attendu et fonctionner.

Résumé

Quant aux connaissances, elles sont écrites ici [Secure Design / Secure Coding Guide for Android Apps] ](https://www.jssec.org/dl/android_securecoding.pdf) En fait, il n'est pas réaliste de tout vérifier dans un examen, et il est réaliste d'utiliser un outil parce qu'il y a des omissions. Le montant que vous pouvez dépenser pour la sécurité dépend de l'application que vous créez,

Recommended Posts

valeur par défaut d'Android: exporté
Valeur par défaut pour server.servlet.session.timeout
Créer un environnement Spring pour Android 2.0.0
[Android] Causes et remèdes pour TransactionTooLargeException
Valeurs par défaut pour MaxHeapSize et InitialHeapSize
Liens pour créer des applications Android (pour les débutants)
Premier développement Android pour les gens occupés
Une collection de bibliothèques utiles dans le développement Android
[Android] Créez une validation pour la saisie de la date!
Notes pour les débutants en développement d'applications Android
[Android] Procédure de prise en charge des liens profonds