当前位置: 首页 > 知识库问答 >
问题:

一些应用(微信)是如何忽略虚假位置,然后检测到真实位置的?

汝楷
2023-03-14

我安装了一个假位置应用程序,并将我的位置设置为不同的位置。然后打开谷歌地图和微信应用,

  • 谷歌地图显示我的位置是我设置的(假)
  • 微信app忽略假位置,检测真实位置(怎么做?)

然后我想阻止微信分析我以前收到的真实位置和新的假位置。

  • 卸载的微信

但同样的结果,它检测到了我的真实位置。

我真的很想知道他们是怎么做到的。有什么想法吗?

我曾经尝试过的

  • gps提供商恶搞
  • 网络提供商恶搞
  • 融合的位置提供商欺骗
  • IP地理定位欺骗
  • gps提供商欺骗IP地理定位欺骗

使现代化

即使禁用,也会使用GPS。

07-02 11:46:15.504 2346-2356/? D/LocationManager服务:从com请求434a7e28 gps请求[精度\u精细gps请求=1s0ms最快=1s0ms]。腾讯。毫米(10173)

结论

  • 你可以在旧版本的微信(低于6.0)上伪造位置
  • 使用类似BaiduLocationSDK的东西。它不受LocationManager和Fused provider的任何模拟尝试的影响
  • 我不确定,但BaidLocationsdk似乎通过硬件级别使用GPS

共有3个答案

章岳
2023-03-14

我在评论中问这些问题的原因是,我希望你测试一下微信对不同情况的反应。

还有其他几种方法可以检测设备位置,TestProvider不应影响AFAIK。这需要测试,但以下是一些想法:

  • 地点经理。getLastKnownLocation(字符串提供程序)-这允许您强制使用例如GPS提供程序并获取缓存数据

编辑:添加了电话管理器选项。

万涵亮
2023-03-14

一些第三方定位sdk,如BaidLocationSDK,并不反映系统设置的虚假定位。

这是为了安全。

钮轩昂
2023-03-14

为了检查假位置,大多数应用程序都会在他们收到的NMEA(国家海洋电子协会)数据中查找GGAGSV语句。假位置提供者不会随位置一起发送NMEA语句,因此,如果他们在阈值时间内(比如100秒)没有收到和GGAGSV语句,可以使用此参数来标记当前位置提供者
重复此过程,直到收到一组有效的NMEA句子,然后选择相应的位置。

要检索NMEA数据LocationManager#addNmeaListener(Gpsstatus. NmeaListener listener)调用,然后在侦听器中

void onNmeaReceived(long timestamp, String nmea) {
    Log.d("Nmea Data",nmea);
}

有关更多信息,请参阅添加NmeaListener
NMEA句子,GGAGSV如下所示

GGA-提供3D位置和精度数据的基本修复数据

示例:“$GPGGA,1235194807.038,N,01131.000,E,1,08,0.9545.4,M,46.9,M,,*47”

Where:
 GGA          Global Positioning System Fix Data
 123519       Fix taken at 12:35:19 UTC
 4807.038,N   Latitude 48 deg 07.038' N
 01131.000,E  Longitude 11 deg 31.000' E
 1            Fix quality: 0 = invalid
                           1 = GPS fix (SPS)
                           2 = DGPS fix
                           3 = PPS fix
                           4 = Real Time Kinematic
                           5 = Float RTK<br/>
                           6 = estimated (dead reckoning) (2.3 feature)
                           7 = Manual input mode>
                           8 = Simulation mode
 08           Number of satellites being tracked
 0.9          Horizontal dilution of position
 545.4,M      Altitude, Meters, above mean sea level
 46.9,M       Height of geoid (mean sea level) above WGS84 ellipsoid
 (empty field) time in seconds since last DGPS update
 (empty field) DGPS station ID number
 *47          the checksum data, always begins with *


GSV-查看中的卫星显示该设备可能能够根据其查看掩码和年鉴数据找到的卫星数据。它还显示了当前跟踪这些数据的能力。请注意,一个GSV句子最多只能提供4颗卫星的数据,因此可能需要3个句子才能获得完整的信息。GSV句子包含的卫星比GGA可能表示的要多是合理的,因为GSV可能包括未用作解决方案一部分的卫星。GSV句子不要求全部按顺序出现。为了避免数据带宽过载,一些接收器可能会将不同的句子放在完全不同的样本中,因为每个句子都标识了它是哪一个。

示例:"$GPGSV,2,1,08,01,40,083,46,02,17,308,41,12,07,344,39,14,22,228,45*75"

Where:
  GSV          Satellites in view
  2            Number of sentences for full data
  1            sentence 1 of 2
  08           Number of satellites in view

  01           Satellite PRN number
  40           Elevation, degrees
  083          Azimuth, degrees
  46           SNR - higher is better
               for up to 4 satellites per sentence
  *75          the checksum data, always begins with *

来源:NMEADATA

 类似资料:
  • 使用电话管理器。getAllCellInfo()我能够获得有关相邻基站的信息,包括cellid,但在UMTS的情况下,我只能获得PSC值。是否可以从其PSC和相邻蜂窝塔的MCC、MNC、LAC和CID中了解蜂窝塔的位置?

  • 我正在尝试使用JAXB生成一个sitemap.xml,并且忽略了location属性(我想在根元素上生成属性)。 我想生成一个xml,如下所示: 生成根元素,如下所示: 如果我更新测试以使用显式设置位置,那么它将被填充--但我想了解为什么它不能与注释一起工作。

  • 如果用户伪造位置,我会阻止他们使用我的应用程序。所以我使用来检查位置是否是假的(请点击此处)。但是在某些情况下可能会为伪造的位置返回false。 录像机:https://www.youtube.com/watch?v=rWVvjOCaZiI(在这段视频中,我的当前位置是16.06108.21,假位置是36.26138.28。你可以在上一段视频中看到,位置是36.26138.28,但isFromMo

  • 我在一个简单的锚点元素上使用了一个svg背景图像,并且需要将图形定位在元素的右侧。 我已经设置了两个相互依存关系--除了使用gif或svg图像之外,其他都是相同的。gif正确地定位在右边,但svg不正确。 gif-在iPhone上正确定位-http://codepen.io/johnholtripley/pen/yldwf svg-在iPhone上的位置不正确-http://codepen.io/

  • 这是下面的链接,我如何使用触摸点移动子弹到目标位置。( 我的问题是,如果弹体已经到达目标位置,我如何阻止弹体。 我已经尝试了下面的代码,它工作正常。 但我想让子弹停在目标位置,也不停在最远距离。但我不知道怎么做。

  • 我试图让zabbix前端与nginx一起工作。这是我的nginx配置: /zabbix中的php脚本正在工作!但是像未提供(404)。在错误日志中是这样的: 所以我们可以看到,nginx正在主根目录中查找文件,而不是在别名目录中查找文件。 为什么会这样,我该如何解决?