欢迎来到258分享网,纯净的网络源码分享基地!

258资源分享网

全部作品
全部作品
网站源码
微信源码
素材特效
源码插件
视频教程
建站学院
热门搜索: 织梦  农业种植  农业  安全设置  官方
258资源分享 > 建站学院 > 微信开发 > 揭密微信跳一跳小游戏那些外挂

推荐下载

HTML5响应式自适应网咯设计

2020-05-12   浏览:789

HTML5自适应律师工作室类网

2020-04-04   浏览:654

高端HTML5响应式企业通用网

2020-05-06   浏览:560

html5响应式外贸网站英文版

2020-05-08   浏览:545

HTML5影视传媒文化公司类网

2020-05-12   浏览:543

揭密微信跳一跳小游戏那些外挂

发布时间:2020-10-31  
WeTest 导读

张小龙:这个游戏发布以后,其实它的效果有点超出我们的预期,我们自己开玩笑说,这个游戏突然变成了有史以来可能用户规模最大的一个游戏,因为它的DAU大概到了1点几亿,但同时出现了很多外挂,我没有想到这么小的一款游戏也会有那么多外挂,我朋友圈的朋友也打出了特别高的分,但是我相信不是他自己打出来的。

1 月 15 日微信在广州召开 2018 年的微信公开课 Pro,张小龙不仅当场玩了一把跳一跳游戏并取得了900多的高分,还特别提到了跳一跳小游戏的外挂:

在跳一跳这样一个小的游戏里面,如果一个用户看到里面有一堆外挂得了很高的分,对其他一些每天在练习,试图把自己的水平提高,而打一个高分的人就很不公平,他可能就没有动力继续去练习,继续超越自己个人的最高分数。所以这样一个行为,外挂行为其实会破坏整个系统的规则,并且让规则立即变得失效。

所以,我们这个小游戏发布以后,我们就开始花了很多很多时间来打击外挂。

本着钻研技术的学习态度,我对目前几款比较火的外挂进行了源码分析,总结出了它们的一些破解思路,其实这些作者都并非恶意,作为一个程序员,还有什么比用技术挑战规则,突破极限要有成就感呢?

一、梳理

跳一跳的游戏可以细分为两步骤:距离判断 + 按压模拟,这两步都有下面这些解决方案:

1、距离判断:

● 简单方案:像素点判断

● 进阶方案:OpenCV 图像分析

2、按压模拟:

● 简单方案:adb/wda 指令

● 进阶方案:机械臂模拟手指点击(原创)

下面逐一介绍这里的实现方法,非常有意思。

二、距离判断

1. 像素点判断

该方法采用自目前最火的跳一跳小游戏「辅助程序」:wechat_jump_game。

揭密微信跳一跳小游戏那些外挂

如上图所示,我们先定义了「棋子」和「棋盘」,需要找到的两个目标点用橙色点标注,首先针对棋子的目标点的判断,可以这么做:

揭密微信跳一跳小游戏那些外挂

相关代码:

揭密微信跳一跳小游戏那些外挂

而针对棋盘中心点的确认的思路则是这样的:

揭密微信跳一跳小游戏那些外挂

当然还有一些其他方法来尽量缩小棋盘中心点的检测区域,这里简单介绍下:

揭密微信跳一跳小游戏那些外挂

当然,如果恰好跳到中心点,下一个棋盘中间会有白色点,则可以直接匹配中心点的色值,得到棋盘中心点,这种情况基本百发百中:

揭密微信跳一跳小游戏那些外挂

相关代码:

揭密微信跳一跳小游戏那些外挂

但棋盘种类比较多,形状也各异,而且棋盘表面并非纯色,还有其他颜色,所以即使像素判断的代码里增加了很多特殊 case,依旧不能做到非常完美:

揭密微信跳一跳小游戏那些外挂

总结一下,目前这个方案基本没有太大问题,但如果跳一跳游戏把背景改成了非线性渐变,或随机飘落一些物体,或棋盘表面更加复杂,那这里的算法就基本不可用了。

2. OpenCV 图像分析

基于像素点的判断低效而且不够健壮,而利用 OpenCV 计算机视觉库则可以从图像分析层面进一步简化判断逻辑提升效率,首先采用该方法的跳一跳小游戏「辅助程序」来自 wechat_jump_jump。它是这么得到棋子的位置的:

揭密微信跳一跳小游戏那些外挂

相关代码:

揭密微信跳一跳小游戏那些外挂

接下来找棋盘的中心点,假如下一个棋盘存在白色的示意点,同样采用上面的模板匹配方法进行匹配,若匹配不上(匹配值小于某阈值,也许下个棋盘本身就是白色,所以灰度图分辨不出),则采用第二种方案:

揭密微信跳一跳小游戏那些外挂

这里是否准确的精髓就在于高斯滤波去除图像噪音的临界点以及 Canny 函数中阈值的设定,需要不断调整参数到最优状态。

相关代码:

揭密微信跳一跳小游戏那些外挂

三、按压模拟

1. adb/wda 指令