《Pokémon GO》模拟位置漏洞分析报告

2016-10-10
一 漏洞简介

1) 漏洞所属游戏名及基本介绍:Pokemon Go(Niantic.Inc),AR游戏,卡牌收集类。

2) 漏洞对应游戏版本及平台:IOS 0.37.0

3) 漏洞功能:模拟位置(可过锁区限制、自动行走等)

4) 漏洞危害评级:红


二 漏洞实现介绍

1、漏洞实现使用工具

使用Xcode进行IOS越狱开发,既是常见的dylib插件开发(具体见GSLab之前的IOS越狱开发环境搭建等文章)。如下图所示是本次验证插件DEMO。


图1. 漏洞验证DEMO:pokegps插件

2、漏洞实现过程及实现原理

1) 伪造位置:Pokemon Go获取该功能的实现简单,如下所示,直接HOOK CLLocation类的coordinate。由于本身存在coordinate该属性,可以直接利用method_exchangeImplementations实现函数method Swizzle。


图2. HOOK的是CLLocation类


图3. 增加load函数,在里面实现hook


图4. 在自己的coordinate中,修改坐标

该插件DEMO对坐标进行了简单篡改:以联合广场(国内锁区无法使用,需要定位到国外)为起点,不断的降低经度(在联合广场是向西行走)。

其原理较为简单,既是CLLocation类保管着位置信息(经纬度、海拔等信息),所以直接拦截其获取经纬度(coordinate)的点,即可随意篡改位置。外网流传的各种懒人版本破解版,实质也是通过这类方式实现。如下图所示,在CLLocation做手脚。


图5. 核心也是通过拦截CLLocation的coordinate

该漏洞出现的原因是开发商Niantic没有静态校验位置的可信度。通过简单测试发现Niantic只对速度进行了校验,既是如果移动速度过快(从一个地区瞬间跨越到另一个地区),会被检测处罚(无法领取补给,遇不到精灵)。但是自己伪造一个坐标,并且按照正常速度移动,则不会被Niantic检测中。

该功能可以被恶意利用,收益巨大。比如自动移动到最近补给站领取精灵球、自动移动到最近精灵去捕获等,导致正常玩家无法赶上作弊玩家收集进度,影响游戏平衡。

三 漏洞效果截图

1)    插件DEMO的LOG:


图6. 插件LOG,可见原先坐标在深圳

2)    外网流传版本:

图7. 外网的各种破解版

最新评论
暂无评论
参与评论

2025 ChinaJoy跑会指南
推广
商务合作 查看更多

编辑推荐 查看更多
【爆款新游】【潜力佳作】分析系列
推广