“跳一跳”游戏外挂原理详析(手动版)

“跳一跳”外挂编写

前言

2018年第一天,咱们就拿小游戏开刀。“跳一跳”小游戏最近非常火,不得不服腾讯的脑洞。。。

微信已经开始重视小程序的入口释放了,感觉这将成为微信新的增长点,而且其“野心”也是很大的。不多说废话了,直接看本文的重点,这个游戏的玩法很简单,只要长按圆柱体根据距离决定长按时间即可。

这个游戏出来之后,我也玩了一段时间,打到了156分,越到最后越难玩,没办法只能发挥自己的技术优势了,搞个外挂跳一跳。

第一节

两种主要思路

小程序本质上还是H5页面,虽然腾讯自定义了一些语法。一般的想法有两种,一种是:模拟点击,根据距离计算长按的时间,然后通过adb进行在android程序上模拟点击。另一种是:修改数据,这种方式有点暴力,想多少分就多少分,瞬间完成,但是感觉就没有意思了,通过fiddler抓包,获取请求信息,模拟请求即可。因此我还是比较倾向于第一种方式,这样感觉还真实一些。

既然是在android程序上模拟点击,也是有很多方式,可以使用xposed,可以使用辅助功能,这两种方式都要写android程序,而本公众号的受众更多是Python开发者,因此采用最后一种方式:adb命令,通过Python打开shell,发送adb命令。 大家如果对adb是什么熟悉,可以百度一下。adb其实是用来调试android系统的(USB调试模式),做android开发的肯定非常熟悉。本工具的核心原理就是一下几条adb命令:

【截屏】

adb shell screencap -p [图片路径]

图片路径一般将截图放在sd卡中,因此我在程序中设置的路径就是 /sdcard/jump.png

adb pull [手机图片路径] [电脑图片路径]

将保存在手机中的截图导出到电脑上,以便后续使用

【模拟滑动事件】

adb shell input touchscreen swipe x1 y1 x2 y2 time

滑动参数可以看到,从[x1,y1]点滑动到[x2,y2]点,然后是滑动的时间。

第二节

具体工作方式

首先把安卓手机通过USB线连接到电脑上,然后打开USB调试模式。

第一步:截屏,并把图片传输到电脑上,然后在Python tk界面中显示

这个工具原理是基于adb命令的,所以操作之前必须配置好adb工具环境,具体方法可搜索!

为了减少依赖,界面采用的是Python自带的界面库tk,由于图片较大,显示的时候我采用了等比例缩放。需要安装pillow图形库,代码截图如下:

第二步:确定两个方块中心点的距离,利用的是勾股定理,从而计算出滑动时间

两个方块中心点的坐标,需要通过鼠标在图片上点击确定,先点击起点,然后点击终点。这就使用了鼠标监听,然后通过勾股定理,计算出距离。代码截图如下:

根据距离,除以速度,就可以得到滑动时间。速度,每个人的手机可能不一样,我的是0.35,一般是在0.3~0.5,大家自己自己试一下。有了时间之后就可以直接发送adb命令进行模拟滑动了,因为我们只想圆柱体原地滑动一定时间,所以命令为:adb shell input touchscreen swipe 170 187 170 187 time;滑动的起始点和终点都是在自己圆柱体的范围,只是让圆柱体滑动停留的时间到位即可。

第三节

实际效果以及代码地址

源码:https://github.com/qiyeboy/LuLunZi

最后刷到400多分不想刷了

第四节

不足与提高

手动实在太累,接下来使用图像处理,自动确定中心点,敬请期待

第五节

我的书已经决定出第二版

《Python爬虫开发与项目实战》基础篇 试读章节链接:

http://pan.baidu.com/s/1hrWEOYg

这本书包括基础篇,中级篇和深入篇三个部分,不仅适合零基础的朋友入门,也适合有一定基础的爬虫爱好者进阶,如果你不会分布式爬虫,不会千万级数据的去重,不会怎么突破反爬虫,不会分析js的加密,这本书会给你惊喜。

原文发布于微信公众号 - 七夜安全博客(qiye_safe)

原文发表时间:2018-01-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IMWeb前端团队

React-Native简介

React-Native 基于目前React来开发IOS原生应用,Android版本将在年底推出。 为什么需要React-Native 目前主流的应用大体分成三...

28410
来自专栏数据小魔方

SPSS竟然都能做数据地图了~~~

数据地图SPSS篇 ▼▼▼ 最近在做数据地图专题,搜集了好多能够实现数据地图可视化的软件操作技巧,唯独漏掉了SPSS。 总觉得SPSS作为一个傻瓜式菜单操作的...

4767
来自专栏编程微刊

echarts插件-从后台请求的数据在页面显示空白的问题

最近的项目里面关于统计图方面的问题,有涉及到很多,也在博客里面更新了自己所遇到的问题,开发过程中会遇到很多问题,解决技术问题的方法也有千千万

713
来自专栏快乐八哥

解决Select2控件不能在jQuery UI Dialog中不能搜索的bug

本文使用博客园Markdown编辑器进行编辑 1.问题呈现 项目中使用了jQuery UI的Dialog控件,一般用来处理需要提示用户输入或操作的简单页面。逻辑...

18110
来自专栏张善友的专栏

MonoDevelop 3.0——更好的代码完成、性能与快速修复建议

近日,MonoDevelop 3.0发布了,该版本提供了一些新特性,专注于性能、开发者生产力,特别针对C#开发者。 该版本主要的变化在于MonoDevelop的...

1785
来自专栏小灰灰

cocos2dx-v3.5 2048 (一): 项目架构

前言 ---- 开始学习cocos2dx, 在看完官方的基本文档之后,选择2048游戏作为第一次实战训练,并记下整个开发过程 关于2048的教程和源码很多,即便...

1987
来自专栏张善友的专栏

Phalanger---PHP的.NET编译器

除了IronPython,微软正试着让.NET平台支持更多你我熟知的动态语言,例如Perl、PHP、Ruby。根据IronPython的创造者、也是微软CLR开...

1758
来自专栏知晓程序

开发 | 小程序「分享图」生成难?一招教你轻松解决

许多小程序,都提供了「分享图」功能。利用它,用户可以生成特制的分享图片,并分享到朋友圈。

1366
来自专栏星流全栈

相见恨晚的JavaScript包搜索工具 — JS.coach

1492
来自专栏张善友的专栏

兼容Mono的下一代云环境Web开发框架ASP.NET vNext

微软在2014年5月12日的TechEd大会上宣布将会发布下一代ASP.NET框架ASP.NET vNext的预览。此次发布的ASP.NET框架与以前相比发生了...

1779

扫码关注云+社区