Désactiver la Vérification / pour se Moquer de l'Emplacement (prévenir gps usurpation)
Recherche pour trouver le meilleur moyen de prévenir et de détecter le GPS usurpation sur Android. Des suggestions sur la façon dont il est réalisé, et ce qui peut être fait pour l'arrêter? Je suppose que l'utilisateur a à son tour sur les faux emplacements pour usurper le GPS, si cela est fait, alors ils peuvent usurper le GPS?
Je suppose que j'aurais besoin de simplement détecter si faux Emplacements sont-ils activés? Toutes les autres suggestions?
- Je pense qu'il est demandé au sujet de l'Emplacement de l'Usurpation de fonctions disponibles dans le DDMS vue dans Eclipse.
- J'ai un emplacement de jeu basé sur lesquelles je ne veux pas que les gens de tricher, alors j'ai baguette pour le bloc d'usurpation d'identité, ma compréhension est qu'il peut se produire de deux manières.. Ayant faux emplacements activé, et la construction d'une image personnalisée qui n'faible niveau d'usurpation et ne respecte pas l'usurpation de réglage dans les paramètres de l'application. En essayant de trouver les Paramètres.Fournisseur de système pour MockLocations, ou à la recherche pour voir si il est activé (avec un auditeur dans le milieu de l'application).
Vous devez vous connecter pour publier un commentaire.
J'ai fait quelques recherches, et de partager mes résultats ici,cela peut être utile pour les autres.
Tout d'abord, nous pouvons vérifier si MockSetting option est activée
Seconde, nous pouvons vérifier si il existe d'autres applications de l'appareil, qui sont à l'aide de
android.permission.ACCESS_MOCK_LOCATION
(Emplacement de l'Usurpation d'Applications)Si les deux méthodes ci-dessus, première et la deuxième sont vraies, alors il ya de bonnes chances que l'emplacement peut être falsifiés ou faux.
Maintenant, usurpation d'identité peut être évité en utilisant l'Emplacement du Gestionnaire de l'API.
Nous pouvons supprimer le fournisseur avant de demander l'emplacement des mises à jour à partir à la fois les fournisseurs de Réseau et GPS)
J'ai vu que removeTestProvider(~) fonctionne très bien sur Jelly Bean et à partir de la version. Cette API a semblé être peu fiable jusqu'à Ice Cream Sandwich.
android.permission.ACCESS_MOCK_LOCATION
autorisation pourremoveTestProvider
de travail, ce qui je pense est le plus grand désavantage.isMockSettingsON()
,Location.isFromMockProvider()
etareThereMockPermissionApps()
avec une liste noire des applications. Il y a beaucoup de système préinstallé apps avecACCESS_MOCK_LOCATION
autorisation, par exemple sur le HTC et Samsung. Une liste de toutes les applications légitimes serait mieux, mais une liste noire des plus populaires de l'emplacement de l'usurpation d'applications ont bien fonctionné dans mon cas. Et j'ai aussi vérifié si l'appareil s'est enracinée.Il semble que la seule façon de le faire est de prévenir l'Emplacement de l'Usurpation de la prévention MockLocations. Le revers de la médaille est qu'il y a quelques utilisateurs qui utilisent un GPS Bluetooth pour obtenir un meilleur signal, ils ne seront pas en mesure d'utiliser l'application en tant qu'ils sont nécessaires à l'utilisation de la maquette endroits.
Pour ce faire, j'ai fait la suivante :
return !x
au lieu deif(x) return false; else return true
.Depuis API 18, l'objet Emplacement a la méthode .isFromMockProvider() de sorte que vous pouvez filtrer les faux sites.
Si vous voulez en charge les versions avant 18 ans, il est possible d'utiliser quelque chose comme ceci:
isMock = !Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ALLOW_MOCK_LOCATION).equals("0");
Suis tombé sur ce fil quelques années plus tard. En 2016, la plupart des appareils Android aura API de niveau >= 18 et doit donc compter sur Emplacement.isFromMockProvider() comme l'a souligné Fernando.
J'ai largement expérimenté avec de faux/faux emplacements sur différents appareils Android et les distributions. Malheureusement .isFromMockProvider() n'est pas fiable à 100%. À chaque fois dans un tout, un faux ne seront pas étiquetés comme des faux. Ceci semble être dû à certains erronée interne de fusion dans la logique de Localisation de Google API.
J'ai écrit un blog détaillée post à ce sujet, si vous voulez en savoir plus. Pour résumer, si vous vous abonnez à l'emplacement des mises à jour à partir de l'Emplacement de l'API, puis basculer sur une fausse application GPS et d'imprimer le résultat de chaque Emplacement.toString() à la console, vous verrez quelque chose comme ceci:
De remarquer comment, dans le courant de l'emplacement des mises à jour, un emplacement a les mêmes coordonnées que les autres, mais n'est pas signalé comme un simulacre et a une beaucoup moins bonne précision de la localisation.
Pour remédier à ce problème, j'ai écrit une classe utilitaire qui sera de manière fiable supprimer les faux emplacements modernes dans toutes les versions d'Android (API de niveau 15 et plus):
LocationAssistant - sans Tracas emplacement des mises à jour sur Android
Fondamentalement, il "se méfie de" non-faux emplacements qui sont à moins de 1km de la dernière maquette emplacement et aussi des étiquettes comme une fantaisie. Il continue jusqu'à ce qu'un nombre important de non-faux emplacements sont arrivés.
Le LocationAssistant ne peut que rejeter faux emplacements, mais aussi déchargerait vous de la plupart des tracas de la mise en place et l'abonnement à l'emplacement des mises à jour.
Seulement à recevoir emplacement réel des mises à jour (c'est à dire supprimer les simulacres), l'utiliser comme suit:
onNewLocationAvailable()
va maintenant être invoquée uniquement avec de vraies informations de localisation. Il y a d'autres méthodes d'écouteur vous avez besoin pour mettre en œuvre, mais dans le contexte de votre question (comment prévenir GPS usurpation) c'est principalement ça.Bien sûr, avec un enracinée OS, vous pouvez toujours trouver des moyens de la mystification des informations de localisation qui sont impossibles normale pour les applications à détecter.
Si vous arrivé à connaître l'emplacement général de tours de téléphonie cellulaire, vous pouvez vérifier pour voir si la cellule active de la tour correspond à l'emplacement donné (à l'intérieur d'une marge d'erreur de quelque chose de grand, de l'ordre de 10 ou plus de miles).
Par exemple, si votre application déverrouille les fonctionnalités uniquement si l'utilisateur est dans un emplacement spécifique (votre magasin, par exemple), vous pouvez vérifier le gps ainsi que les tours de téléphonie cellulaire. Actuellement, pas de gps usurpation d'application des parodies les tours de téléphonie cellulaire, de sorte que vous pouvez voir si quelqu'un à travers le pays, est tout simplement d'essayer d'usurper leur chemin dans votre particulières (je pense à la Disney Mobile Magic app, pour un exemple).
C'est comment le Lama application gère l'emplacement par défaut, étant donné que le contrôle de la cellule de la tour de l'ids sont beaucoup moins intensive de la batterie de gps. Il n'est pas utile pour des lieux très spécifiques, mais si le domicile et le travail sont de plusieurs miles de là, il peut faire la distinction entre les deux endroits très facilement.
Bien sûr, ce serait de demander à l'utilisateur de disposer d'un signal de cellule à tous. Et vous devez connaître tous les tours de téléphonie cellulaire id dans la région-la sur l'ensemble du réseau des fournisseurs, ou vous courez le risque d'un faux négatif.
essayer ce code très simple et utile
Ce script fonctionne pour toutes les versions d'android et je trouve cela après beaucoup de recherche
Vous pouvez ajouter d'autres test basé sur la cellule de la tour de triangulation ou de Points d'Accès Wifi info à l'aide de Google Maps API de Géolocalisation
La façon la plus simple pour obtenir des informations sur CellTowers
Vous pouvez comparer vos résultats avec site
Pour obtenir des informations sur les Points d'Accès Wifi