旧博文,搬到 csdn
原文:http://rebootcat.com/2018/01/08/wechat_jump_hack/

最近挺火的微信跳一跳

最近新版微信的『跳一跳』小程序着实火了一把,也把小程序这个概念再次推波助澜了一波,看来以后小程序这个入口会有大作为。

张小龙:一个好的 APP 应该是用完即走的。

这句话对用户来说是个好消息,对其他创业者来说却可能会招来恶语相向。现在这个时代的步伐越来越快,大家好像都很忙,时间越来越珍贵。如果以后微信真的把小程序这个入口做好了,我觉得对于用户来说,是件好事,当然前提是做好了,比如安全性啥的,比如不会被外挂啥的!

现在中午,吃完饭没事大家都会高呼 “来一波!来一波!”,就是微信小游戏『坦克大战』,3V3 玩得不亦乐乎!

废话不多说,看着别人微信跳一跳几百分那么高的分,感觉坐不住了,为了装逼,所以有了这篇博文!

林夕水共是我,这是目前能让好友看到的最高分

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Kaw92Kg2-1599141572052)(/images/bi.png)]

踩完所有坑写的一个简单的说明

说明一

说明:本人的原始目的虽然是为了装逼,但其实是本着一起探讨技术、一起学习、一起 hack 的心态来折腾这些的。所以对于某些人在某宝上花钱买外挂来刷分的行为表示不齿,不要为了装逼而装逼!

其实刚开始知道有外挂刷分的时候,并且朋友圈也有转了好几篇关于微信跳一跳可以辅助刷分的文章时,我当时的表情就是,“哦,高分原来是这样”,然后一脸不屑,你是否也跟我一样的表情当时?
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Gb3PNTzJ-1599141572058)(/images/wechatsoso.png)]

可是,如果是你去做,哪怕按部就班的来做,你能做好吗?

这就是 “眼高手低”,其实很多时候,你看到的和你做过的是两回事。前几天翻出罗振宇2016年跨年演讲,他讲到他想做『得到』APP 的初衷就是希望做一个翰林院,可以把好的东西告诉身为皇帝的我们,因为我们不知道什么好什么不好,我们好多时候需要的是粗暴的对待,需要你直接告诉我结果,哪些是好的不就完了吗?这种有别于类似微博、今日头条这种根据你的口味来推荐的 “母爱算法”,也就是 “父爱算法”。

话没错,我也同意,但忽略了一个东西,每个人的接受能力不同,而且知识这种东西往往不是结果,更多的是过程,过程中获得的东西可能比结果更有价值和意义。用到这里,你看到了那么多篇揭秘跳一跳外挂的文章,你就懂了吗?你就可以不屑一顾了吗?

你以为不过如此,其实中间的波折可能把你弄成一个傻逼!所谓:

绝知此事要躬行

说明二

  • 我的技能:C++、Python等
  • 我的设备:Mac Pro && iPhone 7Plus

写这篇博文之前没有接触过安卓、IOS 开发,所以 Debug 移动设备上的程序(游戏、APP),相对来说会感觉困难一点。所以折腾这个跳一跳,真的还是挺折腾的!

开始吧

过程中可能会有很多问题,当时也没来得及做记录,所以仅记录一些能想起来的问题吧!

安装 WDA

首先,可以先大概看一下教你用 Python 来玩微信跳一跳
这篇文章,作者(@神器的战士)很厉害,他已经把跳一跳辅助 wechat_jump_game 传到 github 上了,话不多说,按照 Wiki 里的步骤开干。

由于我的设备是 MacOs + iPhone ,故第一步是得安装一个 WebDriverAgent,这个东西我简单理解就是一个 WebServer 驱动,可以远程控制 IOS 设备。类似于安卓里的 ADB 工具。可以参考这篇文章:iOS 真机如何安装 WebDriverAgent。

照着操作,没毛病!当然前提是你得安装好了 xcode,没有的话直接在 AppStore 里搜索 xcode 就行。然后后面就是一路的坑。

  • 什么是证书?
  • 什么是苹果开发者账号?
  • 有没有免费的苹果开发者账号?
  • 账号和证书啥关系?
  • 免费的证书和收费的证书一样吗?

由于是 IOS 开发小白,这些概念都不懂,所以走了很多弯路,因为照着 iOS 真机如何安装 WebDriverAgent 这篇文章中的步骤操作,预料之中没有那么容易就成功。后来有网友说其实不用开发者账号,有个证书就行,某宝上买一个就行,然后就去某宝上搜索了半天,完全不懂,最后花 19 元买了一个证书,如下图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DYZkNdCh-1599141572060)(/images/taobao.png)]

怀着忐忑的心,导入项目中,测试,然后果然也没通过!当然这里反复试了很多次,Google 了很多次,试过了很多能搜到的办法,依然没通过!看来是必须花 99$ 去买一个个人开发者账号了,不然这次装不了这个逼了,心中有点凉了半截了!因为我不想花几百块钱就为了装一次逼!

然后依然是 Google,偶然发现说 “其实真机调试不必花钱买个人开发者账号的,现在 xcode 已经很开放了,可以使用个人的账号(也就是你的 AppleID)升级为免费开发者账号”。没说的,低头就是干!

我使用了用来登录手机的 AppleID 做签名,然后依然是不通过,这里就不放图了。你得自己去亲自操作,自己去踩坑。到这里,心凉的差不多了!离我装逼的目标越来越远了!

感谢伟大的 Google,让我看到了这篇文章 【新功能】免99美金开发者账号真机调试测试教程,有啥说的呢?跟着干啊!

这里强烈建议重新申请一个 AppleID,单独用来做这个操作,因为后面需要用到 AppleID 的密码,为了安全,不要使用用来登录手机的那个 AppleID。我就傻逼的用了自己登录手机的 AppleID,后来要用这个 AppleID 登录软件,执行一些操作,才发现这样不安全,所以赶紧重新申请了个新的 AppleID,然后重新更改了原来 AppleID 的密码。囧!

这里要注意,只需要两个文件就行了,不用跟着做到最后。

  • 申请ios测试证书(p12)
  • 申请ios描述文件(mobileprovision)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sZNApPvS-1599141572064)(/images/p12.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mGZdFwLL-1599141572066)(/images/mobile.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D4FGdOh7-1599141572070)(/images/p12mobile.png)]

到这里,可以很开心继续之前的操作了,拿到项目中,导入进行证书签名,然后又他么失败了,GG!!

好吧,最后试了一下,需要更改 WebDriverAgentRunner Bundle Identifiler,随便加个后缀,比如我加了 “.s6”:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oNJgfXQA-1599141572073)(/images/s6.png)]

WebDriverAgentLib 的 Bundle Identifiler不用更改。

所以最终的 xocde 中关键地方有以下几处:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4WV6QEve-1599141572074)(/images/corea.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PeYqfdQy-1599141572076)(/images/core2.png)]

然后插上数据线,开始编译测试。这里可能会碰到很多问题,不过别着急,慢慢来,一个个解决。

碰到的问题现在回过头来已经没办法复现了,所以只能说,别着急,按照步骤来,碰到问题多 Google,反正最终编译安装成功后是这个样子的:

2018-01-09 00:57:01.343909+0800 WebDriverAgentRunner-Runner[858:330642] +[CATransaction synchronize] called within transaction
2018-01-09 00:57:01.367036+0800 WebDriverAgentRunner-Runner[858:330642] Running tests...
2018-01-09 00:57:02.340279+0800 WebDriverAgentRunner-Runner[858:330642] Continuing to run tests in the background with task ID 1
Test Suite 'All tests' started at 2018-01-09 00:57:03.064
Test Suite 'WebDriverAgentRunner.xctest' started at 2018-01-09 00:57:03.065
Test Suite 'UITestingUITests' started at 2018-01-09 00:57:03.066
Test Case '-[UITestingUITests testRunner]' started.t =     0.00s Start Test at 2018-01-09 00:57:03.067t =     0.00s Set Up
2018-01-09 00:57:03.098235+0800 WebDriverAgentRunner-Runner[858:330642] Built at Jan  8 2018 17:00:55
2018-01-09 00:57:03.131709+0800 WebDriverAgentRunner-Runner[858:330642] ServerURLHere->http://192.168.0.101:8100<-ServerURLHere

这是通过如下操作看到的:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pecTbikL-1599141572079)(/images/console.png)]

其中比较关键的控制台日志是:

 ServerURLHere->http://192.168.0.101:8100<-ServerURLHere

192.168.0.101 就是 iPhone 设备的 ip 地址了。另外,手机上会有一个 WebDriverAgent App安装上。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CtvvYoUw-1599141572081)(/images/iphoneweb.png)]

到这里基本可以证明 WebDriverAgent 安装成功了。为了进一步验证,可以参考iOS 真机如何安装 WebDriverAgent中关于端口转发一节。其中:

 brew install imobiledevice

可能会出现下面的问题:

# brew install imobiledevice
Error: No available formula with the name "imobiledevice"
==> Searching for a previously deleted formula (in the last month)...
Error: No previously deleted formula found.
==> Searching for similarly named formulae...
==> Searching local taps...
This similarly named formula was found:
libimobiledevice ✔
To install it, run:brew install libimobiledevice ✔
==> Searching taps...
==> Searching taps on GitHub...
Error: No formulae found in taps.

按照提示来:

brew install libimobiledevice

成功后,执行命令:

iproxy 8100 8100

然后访问:

http://localhost:8100/status

如果看到类似下面的 json 输出说明 WDA 运行成功了:

{"value" : {"state" : "success","os" : {"name" : "iOS","version" : "11.2.1"},"ios" : {"simulatorVersion" : "11.2.1","ip" : "192.168.0.101"},"build" : {"time" : "Jan  8 2018 17:00:58"}},"sessionId" : "7E3A6F32-F529-4C42-9C65-3EF92FD993C6","status" : 0
}

几番波折,终于安装好了 WDA,这过程中就可能碰到很多问题,就有可能让你放弃!好在我运气还不错,走到了这里,但这离装逼还很远!

跳一跳辅助上场

真机安装 WDA 可谓一波三折,好在现在终于可以玩游戏了。

废话不多说,当然首先下载 wechat_jump_game:

git clone https://github.com/wangshub/wechat_jump_game
cd wechat_jump_game

这里推荐用虚拟环境(Virtualenv && python3 )来管理,不然你会碰到很多问题:

virtualenv venv
source venv/bin/active

然后执行:

pip install -r requirements.txt

如果这一步碰到了安装问题,解决就好。

接下来,就是见证奇迹的时刻:

确保以下事情:

  • WDA 运行成功
  • 启动 iproxy 8100 8100 命令
  • 手机页面到微信跳一跳开始界面
    然后运行(当然前提还是跟着项目 Wiki 去做):
python3 wechat_jump_auto_iOS.py

你会很开心的!!!

这里要注意的事情:

  • config.json 中参数 “press_coefficient” 设置成 1.32 跳一跳精确度较高(only for iPhone 7Plus)
  • 可以先跑一下手动版的,再上自动版的

这里有个动图可以看一下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gbz5jSx5-1599141572084)(http://o8fj2jbwb.bkt.clouddn.com/wechat.gif)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z8sOyArS-1599141572096)(/images/bi2.png)]

后续

轻轻松松跑到900多分后,高兴后,想向我女朋友装个逼,结果一问,她说你是 81 分啊,我一脸懵逼,然后跑到 github 上才看到,原来大家早就在讨论了,有可能被腾讯反作弊了,或者分数异常没有提交成功。好吧,后来试了一些办法,目前能成功保存到排行榜上的分数是 659 分。

总的来说,为了成功装逼,需要程序做的一件事就是尽量模拟真人,具体来说:

  • WDA 工具按压屏幕的点不要固定,尽量有个随机偏移

具体来说是修改 jump 函数:

 s.tap_hold(random.uniform(100, 400), random.uniform(100, 400), press_time)
  • 每跳一次延时一段时间,不要固定,尽量有随机偏移

具体来说,main 函数 while 循环中:

time.sleep(random.uniform(1, 2.2))
  • 不要连续跳,可以跳记下,停一段时间再跳

具体可以参考 wechat_jump_auto.py 这个脚本,这个脚本是对于 Android 设备的。

def main():i, next_rest, next_rest_time = (0, random.randrange(3, 10),random.randrange(5, 10))while True:pull_screenshot()im = Image.open("/images/1.png")# 获取棋子和 board 的位置piece_x, piece_y, board_x, board_y = find_piece_and_board(im)ts = int(time.time())print(ts, piece_x, piece_y, board_x, board_y)if piece_x == 0:returnset_button_position(im)distance = math.sqrt((board_x - piece_x) ** 2 + (board_y - piece_y) ** 2)jump(distance)save_debug_creenshot(ts, im, piece_x, piece_y, board_x, board_y)backup_screenshot(ts)im.close()i += 1#这里设置跳几下停几秒,防止 banif i == next_rest:print('已经连续打了 {} 下,休息 {}s'.format(i, next_rest_time))for j in range(next_rest_time):print("程序将在 {}s 后继续".format(next_rest_time - j))time.sleep(1)print('\n继续')i, next_rest, next_rest_time = (0, random.randrange(10, 30),random.randrange(10, 20))print('下一次连续跳 {} 休息,下一次将休息 {}s'.format(next_rest, next_rest_time))# 为了保证截图的时候应落稳了,多延迟一会儿,随机值防 banprint("\n")time.sleep(random.uniform(1, 2.2))
  • 最好不要超过 1000 分,适可而止,逼装成功就行了
  • 跑到一段时间,小人总会掉落,而且两个棋盘越近,跳跃精确度越低,算法可以再改进

装逼的意义思考

逼应该是装成功了,还是挺开心的呢!

我觉得某件事有个点能吸引到你,让你投入其中做一些探索、研究,这是一件很好的事情。因为毕竟是因为有趣吸引了你啊,事情就是因为让你感到有趣,才让你有了动力!

另外,回顾整个过程,其实也不难,甚至很简单,但简单的事情不是每个人都可以做到!告诫自己,不要眼高手低,很多事没有想像中那么让你不屑一顾!

这让我又想起了开头提到的老罗的话,确实,知识这个东西,更多的是过程中你的收获和体验,那些才是你珍贵的财富!

说到这,我想起了一个问题,怎样来定义一个人?比如你自己,假如哪天你突然失忆了,忘记了以前发生过的所有事情。那么对于你身边的人来说,你还是你吗?

这个答案估计很不一样,我觉得是:你已经不是你了,那些称之为 “你” 的符号、烙印早已消失,那是时间的雕刻啊!每个时间点上时间对你的雕刻,那些才构成了一个个你,如果抹掉所有这些雕刻,你早已不是你了。

可见,过程显得多么重要!

后记

继续刷分,目前能让好友能看到的最高分是 659,看能不能接近 1000 分!

洗洗睡吧,现在都凌晨 02:20 了!逼不停,探索不停!

参考

  • 教你用 Python 来玩微信跳一跳
  • wechat_jump_game
  • iOS 真机如何安装 WebDriverAgent
  • 新功能】免99美金开发者账号真机调试测试教程
  • 微信跳一跳-最新可用技(zuo)巧(bi)!

微信跳一跳高分辅助踩坑相关推荐

  1. python辅助脚本教程_微信跳一跳python辅助脚本实例分享

    本文主要为大家整理了关于微信跳一跳的辅助脚本内容,这次我们给大家整理的是关于python的脚本内容,一起来学习下. 这段时间微信跳一跳这个游戏非常火爆,但是上分又非常的难,对于程序员来说第一个念头就是 ...

  2. python 游戏辅助脚本_python版微信跳一跳游戏辅助

    本文实例为大家分享了微信跳一跳游戏辅助python代码,供大家参考,具体内容如下 import os import PIL import numpy import matplotlib matplot ...

  3. 微信跳一跳高分系列四:一个 JAVA 版开源的微信跳一跳辅助工具

    基于前三篇文章,我们一起来制作一个自动化工具,解放劳动力,通过机器自动完成跳一跳 wechat-jump-helper 一款JAVA版开源的微信跳一跳小程序辅助工具 传送门一:wechat-jump- ...

  4. 微信跳一跳java辅助

    通过java来实现微信跳一跳的手动辅助 原理: 利用第三方软件将手机屏幕实时传递到电脑屏幕,通过java的Jframe绘制一个面板,将此面板覆盖在手机屏幕上,利用鼠标右键分别点击起点与终点,获取起点与 ...

  5. 微信跳一跳多种辅助合集

    背景:17年12月底微信发布了 6.6.1 版本,加入了「小游戏」功能,跳一跳小游戏一下火遍朋友圈 由来:在github上一个关于这个小游戏的python辅助项目,延展开多个语言版本的相关辅助 ps友 ...

  6. 微信跳一跳外挂辅助及使用教程

    最近朋友圈都在玩微信跳一跳,我也试了几把,感觉这个游戏原理是挺简单,但是想得高分并不容易. 于是乎,我逛了逛平时用来看技术文章的地方(ps:2017年12月份的事情了,现在才想起来写博客,主要是因为不 ...

  7. 微信跳一跳高分系列三:用 adb 破解微信跳一跳小程序

    写在前面:网上关于微信跳一跳的文章已有很多,写这篇的目的是对 adb 工具的一个熟悉过程,也是对未入门的新朋友的一个引导 步骤: 1.保存当前跳一跳页的截图到手机 adb shell screenca ...

  8. python学法用法 自动刷分_微信跳一跳python辅助工具刷分教程详解

    随着身边不少小伙伴都加入了微信跳一跳挑战,朋友圈最近都被刷爆了,为了刷分,很多小伙伴都开始开挂了,Github大神wangshub分享了一个针对该游戏的开源项目,那微信跳一跳python怎么刷分呢,下 ...

  9. 微信跳一跳外挂辅助流程 (MAC+iOS)

    微信跳一跳瞬间火爆朋友圈, 但是手残过不了200, 就研究了一下网上的外挂. 用的是MAC加上iPhone6s 主要使用facebook-wda和wechat_jump_game 以下是具体步骤 安装 ...

最新文章

  1. 解题报告(一)B、(CF453D) Little Pony and Elements of Harmony(FWT经典套路 + 任意模数 k 进制FWT + 快速幂)(2)
  2. springboot默认开启事务吗_香~Spring Boot 应用也可以有配置中心。
  3. ALV 简单实现HTML抬头的方法 (介绍 一)
  4. upload总结及一般处理思路步骤
  5. linux c之管道的介绍、创建关闭和简单读写(父进程向子进程写入数据)
  6. 华为Mate 40系列还有新升级:有望首发66W超级快充
  7. Graph Embedding:word2vec更进一步?
  8. 应用定性数据分析包RQDA(Qualitative Data Analysis)和文挖掘框架包tm结合进行文本挖掘
  9. 蓝桥杯2016年第七届C/C++省赛A组第一题-网友年龄
  10. RHCE红帽考试认证考试模拟题(与真题区别是一些名称不同) 答案见下个博文
  11. kafka报org.apache.kafka.common.errors.RecordTooLargeException
  12. MYSQL数据库同步工具
  13. 计算机硬件基础 软考中级 网络工程师
  14. 【合天网安】Burpsuite简介及MIME上传绕过实例
  15. android 拍照 对焦,Android Camera2 拍照(四)——对焦模式
  16. uni-app App和H5平台上传视频截取视频第一帧生成图片
  17. Microsemi Libero系列教程(全网首发)
  18. python运行出错时打印错误提示信息
  19. python判断是否构成三角形并计算面积
  20. 笔记本锁定计算机怎么解锁,笔记本电脑键盘怎么解锁呢

热门文章

  1. Java pinyin4j 汉字转拼音包括——多音字
  2. C语言:随笔5--指针1
  3. C指针6:指针变量作为函数参数
  4. visual studio2010-2015编译部署caffe
  5. 天空之城(君をのせて)主题曲
  6. time.h中的相关计时函数time,localtime,clock等详解
  7. python迭代计算_如何在Python中迭代坐标列表并计算它们之间的距离
  8. 基于全景图像与激光点云配准的彩色点云生成算法(2014年文章)
  9. C/C++指向指针的指针
  10. 【力扣网练习题】最长公共前缀