欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

未越狱的iPhone如何伪造GPS定位信息

最近Pokemon Go 火的不行,结果人家服务器扛不住了,只接受GPS定位信息在澳洲的客户端的登陆请求。今天自己搞了个小Demo,在未越狱的iPhone上把系统的GPS定位信息给改了。

步骤:

Xcode8-beta上新建一个空白工程 ->  Edit scheme -> Default Location 选澳洲 -> Device选真机设备,Run

Paste_Image.png


现在,看看自己手机(我是iOS10系统):
1.微信:

Paste_Image.png

2.高德地图:

Paste_Image.png

3.系统相机随便拍个照,查看位置信息

Paste_Image.png

4.查找我的iPhone

Paste_Image.png

现在美中不足是,即使应用删除,GPS定位信息还是假的,需要删除应用重启手机,才能恢复正常GPS。Demo我放在了Github上https://github.com/sueLan/RYFakeGPS
用免费开发者账号也可以在真机上调试http://www.jianshu.com/p/540e722b8eff

早有Fake GPS这种提供虚拟定位信息的应用。劳资以前没有研究过.也有人逆向微博,在运行时修改定位信. 但这些方法的前提是你有个越狱设备。Quora上早也有讨论过,如何未越狱设备上如何修改GPS定位信息.各路神招:重载CLLocationManager方法、安装GPS中继器假冒GPS信号、设备代理、iOS模拟器Debug模式的Location模拟......


GPS定位原理

我们先来看一个博客,iOS定位原理.我抄了一段:

GPS定位原理:
    这个是美国军方搞的, 军民两用, 但仍然完全受军方控制(比如可以随时随地设置某个地区收到的信号与否及其精度), 其原理就是:利用天上的卫星(共24颗)不断地广播信号, 地面的GPS接收设备收到信号后, 通过分析多个卫星信号,就可以计算出地球坐标, GPS保证全球任何一个地方(98%)都可以同时收到至少4个卫星的信号, 从而可以准确确定您的经纬度以及海拔位置. GPS定位精度可达10米以内, 不过这是美国军方控制的, 战争时期可能变的不稳定或者误报. (不过我国也有自己的系统, 北斗系统, 目前已经亚洲的覆盖, 还在推广中)

卫星定位必须要能收到卫星信号,因为卫星信号都是很微弱的,虽然iPhone 4开始提升了GPS硬件的灵敏度,但仍然需要在窗户旁,或者户外使用,才能确保卫星信号的强度和稳定性。

与基站定位和WIFI定位相比,GPS耗电最大,速度最慢,但是精度最高。

而iPhone的GPS与纯粹的GPS定位不同, 称为A-GPS, 即辅助GPS.(比GPS更优,不过GPS也分芯片和性能的,不是说所有的AGPS比所有的GPS都好)

因为GPS定位中最耗时、最耗电的就是获取当前天上的卫星信息,哪些卫星可见、在什么位置、时钟是多少等等,这个过程可能花费数十秒甚至几分钟,而AGPS就是利用网络,首先将基站定位或者WIFI定位获得的大概位置发到远程服务器,有服务器进行查询和计算,得出这个位置下当前卫星信息,反馈给iOS设备,iOS设备就可以直接用这些信息来接受卫星信号,不用自己去扫描分析了。这样可以极大提高定位速度,将初次定位时间缩短到1~2秒完成。

A-GPS优点是定位快,缺点是需要网络,但也只是在初次定位时需要网络,因为一旦卫星信息返回,在有限时间和范围内,这些信息无须改变,之后的GPS定位就不再需要联网,都是直接用这些卫星参数接受信息了。

在iOS设备上,上述定位方式会综合应用,一般地,可能先按照最快的“无网基站定位”返回一个位置,当有网络连接时,在用有网基站定位更新位置,然后,利用AGPS上网查询卫星星图,最后,在能收到GPS信号的情况下,转为使用GPS定位。

根据当前信号情况和网络环境,iOS可能在上述方式之间反复迭代,不一定一致特定步骤或者方式,而且随着iOS升级,定位顺序和规则可能改变。

GPX FILES

GPXGPS eXchange Format,GPS交换格式)是一个XML格式,为应用软件设计的通用GPS数据格式。它可以用来描述路点、轨迹、路程。它用来保存位置,海拔和时间。

Paste_Image.png

Xcode也是用GPX 文件来存储位置信息.所以,我们还可以自定义一个GPX文件,模拟任意的位置信息。

Paste_Image.png

https://blackpixel.com/writing/2013/05/simulating-locations-with-xcode.html
https://github.com/whilethis/location-simulation


大多数App取定位信息的时候,都是调用用系统的Core Location API ,CLLocationManager.

Paste_Image.png

然而在此所有app调用定位服务后,获取到的都是我在FakeGPS工程中选的Default Location的定位信息。Why ? 有人说是bughttp://stackoverflow.com/questions/14285453/xcode-default-simulated-location

Paste_Image.png

各种联想中...

             

小礼物走一走,来简书关注我

赞赏支持
                       iOS开发        
    Web note ad 1    
    登录 后发表评论
     
    魅影骑士_a76f  
    19楼 · 2017.05.02 10:21

    没有Xcode或者电脑不再身边的时候,用PhantomGPS方便一些

     
    表没食子儿茶素没食子酸酯EGC  
    18楼 · 2017.04.02 10:46

    楼主你的demo 404了…可以再放一下吗 很想学习一下

     
    JennonL  
    17楼 · 2017.03.10 08:47

    楼主你好。我把gpx文件删除后用真机调试,发现真机也定位在gpx文件里写的地址。不管删除应用还是重启真机,都定位在那个位置。求解。。


    schema, allow location simulation, 打勾去掉,再跑一下这个程序


    2017.03.19 13:20 回复  


    @蓝新 我当时试过了,没用,包括恢复模拟器设置之类的。现在解决了,把代码都删掉,重新从SVN CHECK OUT ,就好了。。。谢谢啦


    2017.03.23 12:38 回复  
     
    青花瓷的平方  
    16楼 · 2017.01.24 13:12

    我用ios10.2.1测试不可以啊

     
    leesonp  
    15楼 · 2016.12.29 09:51

    有没有oc写的啊  我Xcode8跑不了


    xcode8.2运行没问题,这是swift2.3版本的,打开会让你更新,更新完了没任何错误,直接运行了


    2017.01.21 21:32 回复  
     
    Solangere  
    14楼 · 2016.12.19 02:17

    但是这个app并不能脱离xcode工作啊,总不能抱着电脑满街跑吧:persevere:

     
    iOS码农  
    13楼 · 2016.10.26 15:45

    404了啊,demo下不了

     
    MichaelHuyp  
    12楼 · 2016.10.12 11:42

    楼主你好 我们公司最近有个需求 是想拦截使用虚拟定位软件的用户 请问可以做到吗。。 如果能够做到,请指教一二 谢谢啦 :blush:

     
    苁唻芣冼腳  
    11楼 · 2016.10.09 21:26

    可以加你微信吗

     
    流弊的dd  
    10楼 · 2016.10.07 18:29
     
    流弊的dd  
    9楼 · 2016.10.07 18:29

    咋恢复到正常的GPS定位?

     
    黄花菜都要凉了  
    8楼 · 2016.07.22 19:06

    楼主,为啥你的手机是IOS10?

     
    蓝新 作者
    7楼 · 2016.07.12 21:41

    至于说原理,其实我也没弄明白,欢迎大家指导 。个人猜测FakeApp把设备把设备定时接收卫星信号的服务不可用,用Core Location API获取GPS地理信息的时候,如果设备无法接受卫星的GPS信号的时候,会读我们设置的默认的GPS地址定位文件。感觉这是Bug,这明显越过了应用隔离的理念。


    @蓝新   https://github.com/kahopoon/Pokemon-Go-Controller 这个有中文的操作步骤么,新手想学习学习


    2016.07.15 12:45 回复  
     
    蓝新 作者
    6楼 · 2016.07.12 17:09

    哈哈,比较忙,刚看到,有个童鞋已经写了,原理是一样的。 https://github.com/kahopoon/Pokemon-Go-Controller

     
    yunFeng  
    5楼 · 2016.07.11 20:37

    多谢分享  虽然可以临时 但是不是一直都可以的 大概一分钟或者分享几次就不行了 楼主可以有深层的修改吗???



    作者:蓝新
    链接:https://www.jianshu.com/p/6b1a2bf25c4c
    來源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。


    来自  https://www.jianshu.com/p/6b1a2bf25c4c

    普通分类: