程序员就是这么皮,逆向Google maps snake游戏

2024-03-06 06:48

本文主要是介绍程序员就是这么皮,逆向Google maps snake游戏,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

为了庆祝愚人节,Google在Google Maps应用安卓版和IOS版本中加入了snake游戏。Check Point研究人员对该应用进行了逆向破解……你不知道的是逆向竟然使用的是远程调试的方法。

本文详细介绍远程调试进行逆向的全过程。

首先用Genymotion在虚拟设备中启动Google maps应用,然后进入snake游戏。中国菜刀

程序员就是这么皮,逆向Google maps snake游戏

程序员就是这么皮,逆向Google maps snake游戏

看起来该应用是基于WebView的,因此研究人员打开了chrome开发者攻击远程调试,如下图所示:奇热影视

程序员就是这么皮,逆向Google maps snake游戏

研究人员发现网站中sources tab中只有一个有趣的JS文件v18.js。进一步分析该文件研究人员发现了一些函数。

函数fa()的作用是开始一个面积为20×20的面板:

this.height = this.width = 20;

变量width和height分别表示游戏板的宽度和长度,因此研究人员在源码中搜索了width和height然后找到了如下函数F(a,b):

程序员就是这么皮,逆向Google maps snake游戏

函数F(a, b)好像是检查snake的身体的坐标是否超过面板的限制。研究人员想要删除该函数中的条件使该函数返回的结果都是true,这样游戏就进入了无敌(无限)模式。

因此研究人员在远程console中输入了inspect,然后将F(a,b)函数修改为:

程序员就是这么皮,逆向Google maps snake游戏

然后玩游戏就进入了无敌模式,界面如下图所示:

程序员就是这么皮,逆向Google maps snake游戏

图1:无敌模式

但是研究人员的目的是对战赢取积分,因此进入下一步逆向:

通过逆向调用栈,研究人员发现有很多对函数wa(a)的调用。研究人员进一步分析该函数发现该函数的递归的,负责请求帧动画。Wa(a)调用函数xa(a, b)和ya(a)来生成生成组成游戏的小方块和面板。

函数xa(a, b)代码如下所示:

程序员就是这么皮,逆向Google maps snake游戏

其中有2个参数是a和b。a是全部变量Q的一部分,含有表示游戏面板的数组,还可以看到train(M)火车,人和路标(K)。该函数还负责计算玩家得分并保存在c.i中,与Q.b的值相同。

程序员就是这么皮,逆向Google maps snake游戏

图2:表示游戏界面的数组

表示的界面如下所示:

程序员就是这么皮,逆向Google maps snake游戏

图3:游戏页

xa(a)会调用函数sa(a)(如图4),函数sa(a)负责当新的小人创建后来生成随机坐标。如果多次调用该函数,就会生成多个小人,如图5所示。

程序员就是这么皮,逆向Google maps snake游戏

图4: 调用函数sa(a)

程序员就是这么皮,逆向Google maps snake游戏

图5:调用的结果,创建了很多小人

虽然多次调用sa(a),也接到了很多人,但是研究人员发现分数并没有变。当火车接到乘客后,会调用函数ka(a,b)。因此还需要修改该函数来增加分数,并更新在屏幕上。

程序员就是这么皮,逆向Google maps snake游戏

图6: 更新的函数

火车的每部分的坐标都在Q.b.o.b中,其中第一个元素表示火车的第一节车厢。

程序员就是这么皮,逆向Google maps snake游戏

图7: 表示火车车厢的数组

研究人员创建了一个简单的AI算法,算法逻辑如下:

程序员就是这么皮,逆向Google maps snake游戏

图8:AI逻辑

snake执行如下状态机:

· 当X=19时,继续向下直到Y=19;

· 当X=19且Y=19时间,继续向左直到X=0;

· 进入Z字形状态机:

a. 向上一次,然后向后,直到X=18;

b. 向下一次,然后向左,直到X=0

c. 返回步骤A.

· 当Y=0时,向后,直到X=19

· 回到步骤1

代码参见gihub地址:https://github.com/romanzaikin/Google_Maps_Snake_Hack

Demo视频如下:

程序员就是这么皮,逆向Google maps snake游戏

参考视频:https://research.checkpoint.com/wp-content/uploads/2019/04/snake3.mp4

这篇关于程序员就是这么皮,逆向Google maps snake游戏的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/779164

相关文章

游戏闪退弹窗提示找不到storm.dll文件怎么办? Stormdll文件损坏修复技巧

《游戏闪退弹窗提示找不到storm.dll文件怎么办?Stormdll文件损坏修复技巧》DLL文件丢失或损坏会导致软件无法正常运行,例如我们在电脑上运行软件或游戏时会得到以下提示:storm.dll... 很多玩家在打开游戏时,突然弹出“找不到storm.dll文件”的提示框,随后游戏直接闪退,这通常是由于

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

MyBatisX逆向工程的实现示例

《MyBatisX逆向工程的实现示例》本文主要介绍了MyBatisX逆向工程的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录逆向工程准备好数据库、表安装MyBATisX插件项目连接数据库引入依赖pom.XML生成实体类、

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3

Python开发围棋游戏的实例代码(实现全部功能)

《Python开发围棋游戏的实例代码(实现全部功能)》围棋是一种古老而复杂的策略棋类游戏,起源于中国,已有超过2500年的历史,本文介绍了如何用Python开发一个简单的围棋游戏,实例代码涵盖了游戏的... 目录1. 围棋游戏概述1.1 游戏规则1.2 游戏设计思路2. 环境准备3. 创建棋盘3.1 棋盘类

国产游戏崛起:技术革新与文化自信的双重推动

近年来,国产游戏行业发展迅猛,技术水平和作品质量均得到了显著提升。特别是以《黑神话:悟空》为代表的一系列优秀作品,成功打破了过去中国游戏市场以手游和网游为主的局限,向全球玩家展示了中国在单机游戏领域的实力与潜力。随着中国开发者在画面渲染、物理引擎、AI 技术和服务器架构等方面取得了显著进展,国产游戏正逐步赢得国际市场的认可。然而,面对全球游戏行业的激烈竞争,国产游戏技术依然面临诸多挑战,未来的

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法   消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法 [转载]原地址:http://blog.csdn.net/x605940745/article/details/17911115 消除SDK更新时的“

火柴游戏java版

代码 /*** 火柴游戏* <p>* <li>有24根火柴</li>* <li>组成 A + B = C 等式</li>* <li>总共有多少种适合方式?</li>* <br>* <h>分析:</h>* <li>除去"+"、"="四根,最多可用火柴根数20根。</li>* <li>全部用两根组合成"1",最大数值为1111。使用枚举法,A和B范围在0~1111,C为A+B。判断</li>** @

国产游戏行业的崛起与挑战:技术创新引领未来

国产游戏行业的崛起与挑战:技术创新引领未来 近年来,国产游戏行业蓬勃发展,技术水平不断提升,许多优秀作品在国际市场上崭露头角。从画面渲染到物理引擎,从AI技术到服务器架构,国产游戏已实现质的飞跃。然而,面对全球游戏市场的激烈竞争,国产游戏技术仍然面临诸多挑战。本文将探讨这些挑战,并展望未来的机遇,深入分析IT技术的创新将如何推动行业发展。 国产游戏技术现状 国产游戏在画面渲染、物理引擎、AI

Android逆向(反调,脱壳,过ssl证书脚本)

文章目录 总结 基础Android基础工具 定位关键代码页面activity定位数据包参数定位堆栈追踪 编写反调脱壳好用的脚本过ssl证书校验抓包反调的脚本打印堆栈bilibili反调的脚本 总结 暑假做了两个月的Android逆向,记录一下自己学到的东西。对于app渗透有了一些思路。 这两个月主要做的是代码分析,对于分析完后的持久化等没有学习。主要是如何反编译源码,如何找到