iOS App 修改甚至动态修改地理位置

Before All

  1. 请勿用于不正当用途
  2. 玩玩就好
  3. 请勿影响游戏平衡
  4. 非开发者请速速离场
  5. 怕麻烦的请速速离场
  6. 能看懂 Pokemon Go Controller 的 README 的也可以离场了。
  7. 文章初版,不够完善,先看着,晚上回去补全,还有一些功能改进可以做。

前期准备

  1. 一台装了 Xcode 的 Macbook
  2. iOS 设备一台或者两台
  3. Pokemon Go Controller
  4. Python
  5. cocoapods
  6. 编程基础
  7. 脑子

昨晚试了一下这个方法,无需 hook,无需逆向重签名。有一种另辟蹊径的感觉,朋友们一直问怎么搞,于是写篇博客给各位看一下。后面的步骤我会把重点写出来,能看懂的童鞋就看下,看不懂的可能说明你不太适合使用这个办法。

这里再次着重说一下,不要影响游戏平衡,仅仅是感受一下而已。

步骤

下载项目

  1. git clone https://github.com/kahopoon/Pokemon-Go-Controller
  2. 在 clone 下来的项目中 pod update --no-repo-update

生成地理位置数据

  1. 打开 Pokemon-Go-Controller.xcworkspace,插上 iOS 设备1,后文中将其称为 iPad,并且保证 iPad 和电脑在同一个局域网内。编译并运行。可以从日志中看到一句:

    [INFO] GCDWebServer started on port 80 and reachable at http://192.168.199.171/

    其中的 IP 地址就是192.168.199.171,为了保证连通,可以电脑上ping一下试试。

  2. 直接用浏览器访问 http://192.168.199.171/ 即可拿到生成的地理位置数据,这个数据是 Pokemon-Go-Controller 项目根据地图定位实时拿到的数据。你可以点击上下左右,也可以直接拖动地图。

  3. iPad 的数据线可以拔了。

模拟地理位置

  1. 新建一个空白的 iOS 项目,我们将其命名为 Pokemon-Go-Handler。
  2. 把从 GitHub 上 clone 下来的项目中的 .gpx 文件拖进新建的项目中,不勾 copy,勾 references。
  3. 连接 iOS 设备2,后文称之为 iPhone。编译运行,在 Xcode debug 栏有模拟地理位置的地方,勾选 .gpx 对应的条目。
  4. 地理位置模拟成功,具体的位置就取决于 gpx 中所携带的数据。可以在 iPhone 中打开一个地图软件,就能直接看到当前模拟定位在哪里。

动态修改 gpx 数据

  1. clone 下来的项目中,编辑 readAndChangeXML.py,把前面获取到的 iPad 的 IP 地址填上去:

    response = urllib2.urlopen("http://你iPad的IP/", timeout = 1)

  2. 保存,在命令行中运行这个脚本。当在 iPad 上修改地图位置时,可以看到脚本会 print 出具体的地理位置数据。与此同时,此脚本会修改当前目录的 gpx 文件中的坐标数据。

实时将 gpx 数据模拟至 iPhone 中

  • 编译自动点击脚本,出现 Warning 可以不用理,如果出现 Error 也不用问我,因为我没遇到→_→
   gcc -o autoClicker autoClicker.m -framework ApplicationServices -framework Foundation
  • 修改 runAutoClicker.py 以下内容

    1. IP地址,不再赘述

    2. 修改点击坐标,前一个是点击箭头的坐标,后一个是点击 gpx 文件对应条目的坐标,这个需要自己量坐标,因为窗体的位置不一样。

os.system("./autoClicker -x 750 -y 400")
os.system("./autoClicker -x 750 -y 450")

Tips:量坐标直接用截图就可以量了,不需要什么 Markman Ps 啥的。

  • python runAutoClicker.py 完事儿。

  • 可以玩了。