文/ 游戏安全实验室

  一 漏洞简介

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

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

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

  4) 漏洞危害评级:红


  二 漏洞实现介绍

  1、漏洞实现使用工具

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

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

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

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

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

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

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

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

  三 漏洞效果截图

  1) 插件DEMO的LOG:

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

  2) 外网流传版本:

1003440naoetci6wb2gcqb.png   图7. 外网的各种破解版

锐亚教育

锐亚教育,游戏开发论坛|游戏制作人|游戏策划|游戏开发|独立游戏|游戏产业|游戏研发|游戏运营| unity|unity3d|unity3d官网|unity3d 教程|金融帝国3|8k8k8k|mcafee8.5i|游戏蛮牛|蛮牛 unity|蛮牛