Top
首页 > 网络和信息安全 > 重磅推荐 > 正文

有关 Pokemon Go!的hacking以及反向工程资源收集

本周的Big Bugs podcast结合了我最喜欢的三样东西: 游戏、移动设备的攻击和网络安全。在这篇文章中,我将简单介绍一下Pokemon Go,并且回顾一下这款游戏存在的一些技术问题,我还会介绍一些对游戏进行逆向工程的方法和技巧,希望能为你们提供帮助。
发布时间:2016-08-02 10:00        来源:360.cn        作者:

本周的Big Bugs podcast结合了我最喜欢的三样东西: 游戏、移动设备的攻击和网络安全。在这篇文章中,我将简单介绍一下Pokemon Go,并且回顾一下这款游戏存在的一些技术问题,我还会介绍一些对游戏进行逆向工程的方法和技巧,希望能为你们提供帮助。

这篇文章比以往的要长,但我觉得这是值得的, 毕竟Pokemon Go的火爆有目共睹。在文章最后,我整理了一些笔记,还附上了一些供你们参考的资源。

存在的技术问题:

•一个自称为“PoodleCorp”的黑客组织造成了游戏的运行中断,他们声称使用了DDoS攻击。之后,John Hanke 在2016年的国际漫展上就服务器问题发表了道歉,并说“我们没有准备好预防措施。“

•早期的用户在iOS上安装Pokémon Go时,会被要求向应用程序提供完整的访问谷歌账户的权限,进而让程序访问他们的邮件, Dan Guido发现,这会允许Niantic在无意中访问人们的电子邮件地址和电话号码。

逆向工程:

1. 客户端:

•游戏使用c语言进行编码,使用unity框架

•游戏使用剥离级别2的unity代码。这意味着所有的.NET网络字节码都被编辑进了本地汇编代码中,并与其他使用了IL2CPP的部分一起打包。当然了,这也让反向变得更加漫长,这比将.dll输送到ILSpy或dotnetReflector更加乏味。简而言之,这意味着你将没法找到Unity脚本文件,除非一些包含它的调试版本自动弹出了这些东西。”

•Current state of reverse engineering(逆向工程的当前状态)

•Reverse-engineer of the Android app(面向Android应用程序的逆向工程)

•What we know so far(迄今为止我们了解到的内容)

•Does anyone know where the compiled Unity script assemblies can be found?( 有谁知道编译过的Unity脚本组件可以在哪里找到吗?)

•Decoded GAME_MASTER protobuf file v0.1 - all Pokemon, move, item stats(解码的GAME_MASTER protobuf文件v0.1——Pokémon项目统计)

•Unbundling Pokémon Go(拆分Pokémon Go)

•Reversed/reflection pastebin(反向的pastebin)

•Looks like Niantic forgot to clear a few scripts on evolution(看样子Niantic忘了清除一些进展中的脚本)

•Pokemon GO App Assets and Images(Pokémon Go应用的asset和图像)

•Using proxy libraries to intercept JNI and UnityNative code calls.(使用代理库拦截JNI和Unity < - >本地代码调用)

•F# scripts to unsplit & split Unity asset files. (F#脚本不可分离和可分离的Unity asset文件)

后续的研究:

•Unity博客:An Introduction to IL2CPP Internals

•Unity 文档:Optimizing the Size of the Built iOS Player

•Alan Zucconi:A practical tutorial to hack (and protect) Unity games

•Pyromuffin:Reverse Engineering Unity Games

• .NET反编译工具是一个神奇的程序 ,它可以将.NET 聚集起来,并将其转化为C语言代码。

•Pen Test Partners:Tearning down and reverse engineering Android (toys)

2. 网络:

•大多数流量不是SSL。PoGo使用的是Protobuff,Protobuf是谷歌的一个二进制对象压缩协议,它的构造很难解释。你得到的全是编号字段,因此你需要.proto文件(一种地图)。

•有一部分流量实际上是加密的, 它们有可能是反作弊或反分析的,这仍有待观察。

•Guide to Pokémon Go Server Responses(Pokémon Go服务器响应指南)

•How was the RPC binary protocol determined?(RPC二进制协议如何确定?)

•Protocol Buffer reverse engineering(协议缓冲区逆向工程)

•PokemonGo Decoder For BurpSuite(BurpSuite的PokemonGo解码器)

3. 第三方开发:

•mila42 制作出了第一个API解析器,AHAAAAAAA提供了当前最复杂的Pokemon地图。

•Pokevison等网站正在使用核心算法

4. 打过补丁或挂机的客户端:

•正如之前提到的,几个打过补丁的客户端仍然存在。

•为IOS提供的、来自于某些企业应用程序的旁加载应用程序。

• 来自于android上某些隐蔽apk的旁荷载。

•/r/pokemongobotting

•OwnedCore forum on Pokemon Go

PokemonGo的未来和安全性:

• RPC / Protobuff可能会改变, 很多项目可能会消失

• 由于bots的存在,交易可能会受到巨大的影响。也许Niantic需要用数据阈值来抵御bots。

•昨天速率限制降低了,Pokemaps不准确。

•可以使用更多SSL定位,但是这些东西最终会被绕过。

•猫鼠游戏。

游戏技巧:

•低级:找个离三个站很近的地方,引诱并抓住PIdgeys、Weedles和Caterpies(只需12个糖果就可以进化到下一个阶段,它们也是最容易遇到的)。

•更多实用的小技巧在这里:

Hi, I just hit level 25 and wrote a comprehensive guide to everything I know so far.

•在进化之前进行命名,你就可以强制一个Eevee进化:

Sparky = Jolteon

Rainer = Vaporeon

Pyro = Flareon.

•Overall stats of Pokemon(Pokémon Go的整体统计)

•已经总结出来但未经证实的数据:

Trainer等级上限是40

蛋的等级上限是20级,所以,如果你在37级的时候得到一个蛋,孵化结果和你在20级时没什么两样。

野生Pokemon等级上限是30级,这意味着30级后,每个人都能找到相同的最大CP 的Pokemon,这也取决于糖果和星尘的使用,你需要升级它们到你的等级上限。

扔球的准确性已被公认为是捕获机率的重要指标。

未来的孵化器可能会减少孵化之前所需的公里数。

动作拥有准确性和命中率指标。

每个Pokemon都有它自己的捕获率和逃跑率。

随着Trainer等级提高,损害值也会提高。

升级之后,Pokemon更难以捕捉。

Mewtwo、Moltres、Zapdos和Articuno存在于传说中。

Mew是神级的。

从39 级到40级需要五百万点经验,从1级到40级需要二千万点。我一天最多可以得到十万经验,这相当于从39 级到40级需要3到4个月。

Pokemon有基础攻击、防御和精力(HP)。

O在传说级以下,Dragonite拥有最强的基础攻击,为250。

MewTwo的基础攻击为284。

Moltres是三种传说级鸟类中基础攻击最高的。

Articuno是其中基础防御最高的。

Zapdos的基础攻击几乎和Moltres一样高。

Pokemon有一个进化调节器和一个HP调节器,CP和HP在进化时都遵循一组乘数。

防守型Pokemon在健身房中每1.5秒攻击你一次。

Master Ball位于游戏中,但是没人知道应该上哪找。

传说级的神奇宝贝有一个产卵率,他们没有捕获率。

游戏中有STAB, 会为攻击提供25%的奖励。STAB代表着“相同类型攻击奖励”。

 

专题访谈

合作站点
stat