利用Python制作微信跳一跳外挂,我才是好友排名第一的人!

28 篇文章 0 订阅
22 篇文章 0 订阅

从前几天微信最新版本 6.6.1 的更新开始,微信小程序游戏“跳一跳”似乎在一夜之间风靡了朋友圈。

它甚至比五六年前的飞机大战游戏都火爆,这种小游戏的火爆不仅仅是因为有魔性、有意思,更重要的是可以进行好友 PK!

“跳一跳”的小游戏推出后,很多准备奋发向上的同学,这个假期的美好愿景被毁了。

为了多跳几步,以及朋友圈的排名,

大家在整个假期都是这样的:

就这样跳啊跳...

挤地铁跳,蹲马桶跳,乘电梯跳,

静默的每 1 秒都不能浪费

在办公室,还要时刻警觉后面...

说好的工作呢...我控制不住我自己啊!

可是很多人费尽心思跳了一下午

也没超过 100 分

但排行榜里四分之三的人都超过三位数了……

真是扎心了……

今天小编来告诉你,如何才能获取高分,如何才能占据朋友圈榜首?

游戏攻略拿高分

普通版本的高分秘籍是这样的:

  • 如果你每次都能挑到各自的正中间的话,可以 + 2 分,如果连着跳到中间会 + 4、+6、+8、+10……
  • 跳到污水井盖上面,停留 2 秒,等到下水道声音响起直接 + 5 分
  • 跳到魔方上面,停留 2 秒,等到魔方转正会直接 + 10 分
  • 跳到音乐盒上面,停留 2 秒,等到音乐响起会直接 + 30 分
  • 跳到便利店,停留 2 秒,等到便利店开门会直接 + 15 分

以上是针对普通用户,但对咱们程序猿来说用这套太 Low 了,接下来要说的是如何从技术层面去实现高分:

技术手段实现高分

通过 Python 手段

在 Github 上面已经有人用 Python 来玩跳一跳这个游戏了,想多少分就有多少分。

GitHub 地址:https://github.com/wangshub/wechat_jump_game

步骤:

  • 安卓手机打开 USB 调试,设置》开发者选项》USB 调试。
  • 电脑与手机 USB 线连接,确保执行 adb devices 可以找到设备 id。
  • 界面转至微信跳一跳游戏,点击开始游戏。
  • 运行 python wechat_junp_auto.py,如果手机界面显示 USB 授权,请点击确认。

很有趣!简单点说就是:用电脑帮你玩微信跳一跳,全自动,不用手动。效果:

这里梳理一份稍微完整一点的操作步骤,以 Mac 的为例,Win 的思路是一样的。

另外,这里用的是安卓手机,iOS 也差不多,不过要下载一个 5.5GB 的 Xcode。

1、下载程序,打开下面的链接,点右侧 clone or download,再点 download zip。

2、解压 zip 文档,再把文件夹挪到桌面,打开文件夹,你会看到很多东东:

3、打开 mac 系统自带的“终端”,这是一个命令行应用,win 用 cmd 就可以了吧。

4、通过终端进入文件夹,命令行如下:

~/Decktop/wechat_jump_game-master 

5、安装 pip,在终端输入 sudo easy_install pip 再回车,可能要输入密码。

6、安装各种依赖程序,在终端输入 pip install -r requirements.txt 再回车,系统会自动安装。

requirements.txt 就是文件夹里的一个 txt 文档,里面写着会自动安装哪些程序。

pip 就是第 5 步安装的程序,如果没安装,pip install -r requirements.txt 将无法执行。

7、安装 adb,打开下面的链接查看,有 3 种方法,建议用第二种,是英文,如果你不懂英文可以百度中文教程。

https://stackoverflow.com/questions/31374085/installing-adb-on-mac-os-x

8、打开安卓手机的设置- 开发者选项 - USB 调试(如果没有开发者选项,可百度打开开发者选项的方法),用 USB 线连接手机和电脑,手机可能会弹出对话框,点同意。

如果出现运行脚本后小人不跳的情况,请检查是否有打开“USB 调试(安全模式)”,记得顺便打开 USB 模拟点击。

9、在终端输入 adb devices,如果看到下面这种信息,说明 adb 已正确安装,也说明电脑成功检测到手机。

如果你系统是 Win10 或 Win8 可能需要先设置一下“禁用强制驱动程序签名”。

不然会出现下面的“文件的哈希值不在指定目录中”安装不上 adb 驱动的问题,网上有教程请自行学习。

10、打开微信跳一跳点开始,在终端输入 python wechat_jump_auto.py 点回车,游戏就会自动开始~ 请根据手机分辨率运行相应的 *.py 文件。

注意:

  • 我跳了很多次,最后都会掉下盒子,暂时最多只能跳到 1800+ 分,不能一直跳下去。
  • 分辨率不同,配置文件也不一样,具体看 config 这个文件夹。
  • 别刷太高分,有人刷到 4000,结果分数被微信清零。

实验结果:

只要有耐心,你就是王者

下面分析一下代码,Main 部分有一个 While 循环,只要你不终止,它会一直重复操作。

Main部分代码里面主要调用的自定义函数有三个,还有一个 time.sleep 是为了延迟一下:

  • pull_screenshot() #获取图像
    find_piece_and_board(im) #根据图像获取两个点的坐标值
    jump(math.sqrt((board_x - piece_x) ** 2 + (board_y - piece_y) ** 2))#根据两点距离和手机像素计算按压时间并 JUMP
    
    //加qun:808713721,获取最新Python编程学习资料。

    注意:请仔细阅读上面的代码哦

pull_screenshot()

这个函数主要是利用 adb 来获取图像,这里顺便说一下“adb”,adb 是连接 Android 手机与 PC 端的桥梁,可以让用户在电脑上对手机进行全面的操作。

借助 adb 工具,我们可以管理设备,还可以进行如安装软件、系统升级、运行 Shell 命令等等操作。如“pull”就是获取设备中的文件,想更多了解 ADB 请自行学习~

find_piece_and_board()

根据图像获取当前小人位置和落点的坐标系(piece_x, piece_y, board_x, board_y),这个是这个脚本中的核心部分。

jump

根据设定的“长按的时间系数”计算需要的按压时间,这个系数是根据手机分辨率推出来的,按压时间设定不小于 200ms,核心命令是 adb 的“input swipe”。

“input swipe”模拟的是手指在屏幕上的滑动事件,如果两个点坐标不变化就成了长按了。

代码中四个变量的设置是:“swipe_x1,swipe_y1,swipe_x2,swipe_y2 = 320,410,320,410”,所以是模拟的长按,其实滑动也是可以的。

伪造 POST 请求刷分

除了可以用 Python 实现高分,还有网友爆料还可以直接伪造 POST 请求刷分,直接改分数。

昨日,V2EX 网站上一篇题为《微信跳一跳 可以直接更改分数, POST 请求没有校验… 》的文章获得大量曝光,帖中指出微信小程序存在漏洞,跳一跳小游戏可以直接改分数。

用户朱鹏飞根据帖子的指引,发现甚至连微信小程序、小游戏的源代码都可以直接下载,只需要知道 appid 和版本号,就可以直接构造 URL 下载后缀为 wxapkg 的源码包,不需要任何验证。

据微信公众号“小专栏平台”消息,截自 1 月 1 日 23:50,微信官方已经修复了这个漏洞。不过,据说一些老版本的微信还是可以抓包获取包地址。

最后一个微信已经修复 Bug(部分版本没有修复),但只要利用好前面两个攻略,再配合对节奏的把握,登上朋友圈前几完全不在话下。

本文根据时下最火小游戏微信跳一跳,编写的物理外挂,实现简单,具有DIY精神的都能迅速上手。废话不多说,先来点视频开开胃。 哈哈哈,是不是很爽很刺激,好了,不吊胃口了,还是整点干货吧。 准备1:手机一部,电脑端下载好投屏软件,苹果的airplay,安卓的忘了,自己找下,嘻嘻嘻。。。。 准备2:搞电子的才有,继电器模块一个,随便什么开发版一块,有串口就行,usb转串口模块一个。 准备3:电脑上装上我提供的“跳一跳物理外挂.exe",这个才是核心,后面我会贴源码,low不low不要紧,关键好用,我花了一天时间学的,代码拙劣,慎看,/呲牙。 准备工作做完了,现在开始动工,先做物理部分。 首先拿出你的继电器模块,然后把继电器给削了(捂嘴笑)哈哈,我也不知道怎么告诉你怎么削,还是给个图吧。 哎吆我去,这图这么大的咧,将就看看。反正就是把继电器的壳子给拿掉。温馨提醒:用刀的时候注意点,手弄破没事,别把继电器线圈削了(幸灾乐祸的笑呵呵) 然后呢,找个导电的,有电容的,弹簧呀,电容笔呀,或者湿海绵呀。。。一切可以让手机触摸屏反应的材料都行,就是要小一点。 反正我是找了个弹簧,还把它焊在了继电器的活动片上。不会的,看图,下面没图,还是上面那张。 硬件部分还差个单片机,这个你们都会的,专业的嘛,随便整个单片机最下系统就行,带个串口,协议我告诉你简单。 帧头32位的最高8位后8位后8位后8位 ‘A’00000000 看到没,接收到串口数据后,把除了'A' 之外的四个8位的数据合并成一个32位的数据,这个合并后的数据,就是ms,是多少就是多少ms。 简单吧,单片机只要接收到这组串口数据,就可以进行操作了,(忘了说了波特率115200 ,8,0,1,我想大家都看得懂,不解释了。) 主程序代码如下: if(收到串口发来的数据) { 将4个字节接收到的数据转化为32位的数据; 继电器置1或者置0(看你电路了,让它按下去就行,模拟按下动作); 延时(xx ms);(这就是那个32的数据) 继电器置1或者置0(看你电路了,让它抬起来就行,模拟抬起动作); } 实在不会的,也没事,我不是还有程序源码的嘛; 好了好了,硬件就到这了,整点软件的。软件c#写的,高手的话,简单,随便你们喷,反正我也不熟,就学了一天,整成这样,自认为还行。 源码,我会贴上去,别急。 操作部分。我是鼠标左键点击确定起点位置,鼠标右键点击确定终点位置。也就是说,你想跳,那就鼠标左键点起点,鼠标右键点终点。根据距离计算时间。软件上,有个系数,用来确定不同电脑,不同分辨率的,自己调试下, 一致就行。截图截图,看图看图。 先打开这个软件,苹果的airplay,然后打开手机,选择airplay镜像。然后将软件全屏。 打开我的那个"跳一跳物理外挂.exe", 选择串口后,就点连接,没啥问题是不会有任何提示的。有问题就报错了。(哈哈哈,仰天长啸中) 下面这个框 3.5,这个就是系数了,要将我的这个软件和投上去的界面重合,这样才行。然后你试试鼠标左键,鼠标右键,看看你的继电器会不会动。(不会动就是你程序有问题,硬件有问题,电脑有问题,反正我的是好的,我不管,自己检查) 还有就是,这个软件是由两个窗体组成的,一个透明的,一个透明有边框的,别问我为什么,因为我不知道如何设置透明鼠标不穿透,你也不知道呀,哈哈哈(鬼畜中),会的私信我,我学一下。所以,如果点击的时候会触发这个软件后面的东西,那么请点击任务栏中,将窗体设置到最前,其实就是获取热点了,其实就是激活窗口啦,笨呢,点不到说明窗口不在激活状态嘛。 好了,不说了, 下面都是图了,你们自己玩吧。 啰嗦一句,把框框对齐哟,不然跳不准呢。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盏离

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值