爱意满满的作品展示区。
bravecoder

微信跳一跳 可以直接更改分数, POST 请求没有校验… 🤪

  bravecoder · Dec 31, 2017 · 98199 views
This topic created in 3228 days ago, the information mentioned may be changed or developed.

这两天逛 v 站出现了一众微信跳一跳 'AI',已经被刷屏了……

大致思路都是通过计算两点距离,模拟点击起跳来方式来实现的,

可是作为不越狱的苹果党,手里又没安卓机,看着被刷屏刷榜,非常不爽啊

想着抓个包看看能不能模拟下网络请求刷分,结果 ……

发现可以直接伪造 POST 请求刷分

https://gist.github.com/feix/6dd1f62a54c5efa10f1e1c24f8efc417

Supplement 1  ·  Dec 31, 2017
目前比较麻烦的是

- [ ] 需要先抓包拿到 sesseion_id
- [ ] 分数最高只能设置为 999,还未找到为啥 🐶

### 如何抓包:

1. 下载最新 [charlesproxy]( https://www.charlesproxy.com/download/)
2. 启动 charlesproxy
3. 配置代理: 设置 > 无线局域网 > 配置代理 > 手动 > IP:电脑 ip,端口:8888
4. 导入 https 证书: 浏览器访问 http://chls.pro/ssl 下载安装证书
5. 启动跳一跳小程序
6. 去 charlesproxy 里查看抓到的请求, https://servicewechat.com/ 域名的请求,请求体里就包含 session_id

### 突破 999 的分数限制

Just for fun !


另外附上两个个有意思的点:

### 如何下载小程序源代码
```bash
wget http://123.125.9.32/resstatic.servicewechat.com/weapp/release/{appid}/{version_num}.wxapkg
```

{appid} 为小程序码, {version_num} 为 版本号,示例:
http://123.125.9.32/resstatic.servicewechat.com/weapp/release/wx7c8d593b2c3a7703/3.wxapkg

### 如何解析 wxapkg 文件:
Supplement 2  ·  Jan 1, 2018

更正写错的地方

感兴趣的可以把 小程序 的代码下下来,解包在本地运行玩玩

  1. 用 微信开发者工具新建小游戏,选择空的项目目录,game4fun
  2. wget http://123.125.9.32/resstatic.servicewechat.com/weapp/release/wx7c8d593b2c3a7703/4.wxapkg
  3. python2 unwxapkg.py 4.wxapkg
  4. cp 4.wxapkg_dir/* game4fun/
  5. 重启微信开发者工具后就可以在电脑上运行 跳一跳

game.js 文件可以用 chrome 调整后再看,逻辑其实蛮清晰的

Supplement 3  ·  Jan 1, 2018

好消息,拿 JS 重撸了一遍逻辑,发现 999 这个限制没了,也就是可以任意刷分了……

https://gist.github.com/feix/6dd1f62a54c5efa10f1e1c24f8efc417#file-wx_t1t_hack-js

大家悠着点玩 😜

Supplement 4  ·  Jan 1, 2018

鉴于留言区有贴 session_id 求组的,增加一个附言: session_id 为 base64 字符串, 示例如下

zmprIsSEt/dxWNTH4iyU4V2uM7p8DTQWg1Op+dR0hwbvBW2bl00IHXuIGssPGoMeydL0thdRoxXa9MWqX1xEbDvk+o+1rLiihz0VDhUgbprjLVC4qBqiUQF54c061IhJ1JjBy79dI2xWYs0G9oyI9A==

session_id 和微信账号相关联, session_id 公示或提供给他人 都是有账号安全风险的

Supplement 5  ·  Jan 2, 2018

虽然 CDN 方式下载失效了, 原链还是可以下载的,各位 ……

https://servicewechat.com/weapp/release/${appid}/${version_num}.wxapkg

416 replies  •  2018-01-22 10:49:10 +08:00
1  2  3  4  5  
❮ ❯
lhx2008
lhx2008
Dec 31, 2017
1
只能刷到 999
bravecoder
bravecoder
OP
Dec 31, 2017
2
@lhx2008 还没找到为啥被限制了 ……
Kahnn
Kahnn
Dec 31, 2017
3
怎么抓包拿到 sesseion_id
mochanight
mochanight
Dec 31, 2017 via iPhone
4
我抓了看到是加密的阿。。。。
0754
0754
Dec 31, 2017
5
666
bravecoder
bravecoder
OP
Dec 31, 2017
7
@mochanight 只是简单加密了,二期前端代码里有加密的逻辑,关键是后端没有校验 🤪
ZE3kr
ZE3kr
Dec 31, 2017 via iPhone
9
随便拿一个支持 HTTPS 的抓包工具就行了,我用 Surge 抓的
ZE3kr
ZE3kr
Dec 31, 2017 via iPhone
10
我估计微信有设置游戏时长小于一定时间不能到 1000 以上吧
imwxxxcxx
imwxxxcxx
Dec 31, 2017
11
难怪我之前改 1 万分以上都没成功过,待会试试。
Tink
Tink
Dec 31, 2017 via iPhone
12
为啥我抓不到 servicewechat.com 的请求
chainchan
chainchan
Dec 31, 2017
13
试了下不行, {u'base_resp': {u'errcode': 108}}
怀疑是 action_data 不完整
crab
crab
Jan 1, 2018
14
跪了。pycrypto python3.5 vs2017
ZE3kr
ZE3kr
Jan 1, 2018 via iPhone
15
现在好像不行了
star1cjl
star1cjl
Jan 1, 2018
16
我是失败了
bravecoder
bravecoder
OP
Jan 1, 2018❤️1
17
@crab 我是拿 python2 跑的……,python3 加解密要处理下转换 bytes ⇌ string
ZE3kr
ZE3kr
Jan 1, 2018 via iPhone
18
@bravecoder 之前可以,现在一直不行了,你 2018 之后成功过么
bravecoder
bravecoder
OP
Jan 1, 2018❤️1
19
@ZE3kr 好像是微信服务器有问题? 503 了……
chainchan
chainchan
Jan 1, 2018
21
实测目前最高只能刷到 500 分了。
pacino
pacino
Jan 1, 2018
22
并没有 servicewechat.com 请求
ahu
ahu
Jan 1, 2018
23
@bravecoder
解析脚本报错:

Traceback (most recent call last):
File "/Users/xxxx/Desktop/unwxapkg.py", line 75, in <module>
w = open(root + d.name, 'w')
IOError: [Errno 20] Not a directory: '/Users/xxxx/Desktop/wxa/3.wxapkg/app-config.json'
bravecoder
bravecoder
OP
Jan 1, 2018
24
@ZE3kr 今天居然升级了到 version 4 了,🤔。我这改完 referer 好使,不过 好像限制加强了,500 最高 ……
bravecoder
bravecoder
OP
Jan 1, 2018
25
aino
aino
Jan 1, 2018
26
我 打不开
twm
twm
Jan 1, 2018
27
{u'base_resp': {u'errcode': 108}}
slwl
slwl
Jan 1, 2018
28
是不是已经失效了? {u'base_resp': {u'errcode': -2}}
NLL
NLL
Jan 1, 2018 via iPhone
29
可以的
O3YwA1ENkb7i35XJ
O3YwA1ENkb7i35XJ
Jan 1, 2018❤️4
30
1. 是有加密的, 算法是 AES, 加密的 KEY 是 session_id
2. 最高分是 100000 分(10 万分),并不是 999
3. 如果改的分数比较离谱会被官方直接给你清 0,而且如果多次改,可能会进黑名单,然后就是永久 0 分了(别问我是怎么知道的 /捂脸)
bravecoder
bravecoder
OP
Jan 1, 2018
31
@twm @slwl 起来发现跳一跳又发新版本了, py 操作 aes 好像有点问题,速撸了个 js 版……
bravecoder
bravecoder
OP
Jan 1, 2018
32
@xqin 😂 厉害了,还没试过刷非常高的分。微信维护升级特别快,刷分的漏洞估计很快就会被堵住了…
hobbyliu
hobbyliu
Jan 1, 2018 via Android
33
@bravecoder 新版链接求
chocolatesir
chocolatesir
Jan 1, 2018 via Android
34
@xqin 清零只是因为周一的原因吧。
qiayue
qiayue
Jan 1, 2018
35
@bravecoder 123.125.9.32 这个服务器是你的还是微信的?
uglyer
uglyer
Jan 1, 2018
36
想知道如何获取 appid.(滑稽
qiayue
qiayue
Jan 1, 2018
37
@uglyer appid 有时候作者自己就会公布,因为公众号绑定小程序必须知道 appid
uglyer
uglyer
Jan 1, 2018
38
@qiayue 看了一下下载的包实际上是分发的小程序,这个 ip 猜测是一个运营商的缓存服务器.
qiayue
qiayue
Jan 1, 2018
39
感谢 @bravecoder,我根据你的帖子搞了一个大新闻
http://mp.weixin.qq.com/s/9ZQUL6UcYcBJK-ZTUjm7jQ
qiayue
qiayue
Jan 1, 2018
40
我用我自己的小程序 appid 和 版本号的确可以下载
O3YwA1ENkb7i35XJ
O3YwA1ENkb7i35XJ
Jan 1, 2018
41
@chocolatesir 不是因为周一,因为我是在游戏出来的当天下午就把分数改成最高了(其实当时是输入了好多个 6,但结果是分数只有 100000),然后到晚上的时候分数变成 0 了.又来改了几次,然后就进黑名单了.

@bravecoder 可能现在服务器端加验证了,提交分数的时候,服务器会返回 108. 可能对里面的数据进行了验证.
提交的数据里新增加了 touchList 节点.
bravecoder
bravecoder
OP
Jan 1, 2018
42
@uglyer appid 是公开的,小程序码 识别处理出来的信息里应该就包含
O3YwA1ENkb7i35XJ
O3YwA1ENkb7i35XJ
Jan 1, 2018
43
@qiayue 你这么搞恐怕是在害楼主吧.
uglyer
uglyer
Jan 1, 2018
44
@xqin touchList,如果所有点击都是同一个像素点, 就会被识别为作弊,AI 加了随机坐标就好了。
xiaomayi0323
xiaomayi0323
Jan 1, 2018
45
已经失效了吗,抓包没看到 https://servicewechat.com/ 域名,也没看到分数相关的参数
cfans1993
cfans1993
Jan 1, 2018 via Android
46
凌晨刷到 1400, 现在起床一看发现变成零分了
bravecoder
bravecoder
OP
Jan 1, 2018
47
@cfans1993 每周成绩在周一会自动清零
bravecoder
bravecoder
OP
Jan 1, 2018
49
@xqin 😅 纯娱乐,悠着点玩就好
codeeer
codeeer
Jan 1, 2018 via iPhone
50
@ZE3kr 什么 app
ming2050
ming2050
Jan 1, 2018
51
@qiayue。。。。。。
ZE3kr
ZE3kr
Jan 1, 2018 via iPhone
52
@codeeer surge
uglyer
uglyer
Jan 1, 2018
53
有没有人了解 里面图片的资源文件的图片是个什么编码的 ,想拿来做图像识别 哈哈哈哈哈哈。
run2
run2
Jan 1, 2018
54
看到这个就知道 AppID 和版本号了
Referer: https://servicewechat.com/wx(16 进制包括前面的"wx"字符)/(版本号)/page-frame.html
lwbjing
lwbjing
Jan 1, 2018
55
感谢楼主分享。。
alian
alian
Jan 1, 2018
56
屌炸天🌚,tx 没修复之前赶紧装逼一波
![]( )
xycool
xycool
Jan 1, 2018
57
@ZE3kr 请问现在还能抓包到吗?我这边用 surge 好像抓不到这个请求啊。
SingeeKing
SingeeKing
Jan 1, 2018
58
@xycool 我这里 surge 正常
ghostxdy
ghostxdy
Jan 1, 2018 via Android
59
这游戏完全被你们玩坏了
mekhili
mekhili
Jan 1, 2018
61
可以可以,score = 2018
syahd
syahd
Jan 1, 2018
62
@mekhili 是抓 https://mp.weixin.qq.com/wxagame/wxagame_init 的包吗,抓了以后怎么改呢?
qq2511296
qq2511296
Jan 1, 2018
63
用 微信开发者工具新建小游戏 最新的微信开发者工具 mac 版 没有小游戏
cljnnn
cljnnn
Jan 1, 2018 via Android
64
已经成功将分数变为 2018 了,cool
pangtong
pangtong
Jan 1, 2018
65
我试了,的确可以下下载任何小程序的源代码。

cjyang1128
cjyang1128
Jan 1, 2018
66
楼主你完了,你要收律师函了,这种东西底下沟通就行了
fe619742721
fe619742721
Jan 1, 2018
67
wxagame_settlement { base_resp: { errcode: 0, ts: '1514781867875' } }
我这好像不行。。
Deeer
Deeer
Jan 1, 2018
68
感觉加了时间校验,直接改 post,没有效果哦
0754
0754
Jan 1, 2018
69
楼主 666
shaonian
shaonian
Jan 1, 2018
70
抓请求之前看看 version,刚刚试过版本已经更新到 9 了
Wolther47
Wolther47
Jan 1, 2018
71
@fe619742721 这个是 Respond,测试下来依旧可行

更加关心能够拿到小程序源代码,这个估计有新的姿势
ErnieSauce
ErnieSauce
Jan 1, 2018
72
@idisreg 请问 http://123.125.9.32/resstatic.servicewechat.com/ 这两个地方需要改动吗?如果需要怎么获取,对应的是什么?谢谢
564425833
564425833
Jan 1, 2018 via iPad
73
已撸,谢谢楼主
fe619742721
fe619742721
Jan 1, 2018 via iPhone
74
@Wolther47 额,我这边排行榜数据没有更新。。。
pangtong
pangtong
Jan 1, 2018❤️1
75
@ErnieSauce 这两个地方不需要改动, 你看楼主写的,他写的很清楚,通过抓包得到小程序的 APPid 和 版本号 通过上面的网址这个网址构造即可。
下面贴一下楼主写的。
### 如何下载小程序源代码
```bash
wget http://123.125.9.32/resstatic.servicewechat.com/weapp/release/{appid}/{version_num}.wxapkg
```

{appid} 为小程序码, {version_num} 为 版本号,示例:
http://123.125.9.32/resstatic.servicewechat.com/weapp/release/wx7c8d593b2c3a7703/3.wxapkg
qiayue
qiayue
Jan 1, 2018
76
经过测试,现在已经无法直接下载了
Deeer
Deeer
Jan 1, 2018
77
可以啊,刚下好
Deeer
Deeer
Jan 1, 2018
78
为什么解压出来,项目报错说没有 app.json
VShawn
VShawn
Jan 1, 2018
79
为什么要想尽办法去作弊?
Wolther47
Wolther47
Jan 1, 2018
80
@fe619742721 是的,似乎数据更新有延迟,不知道是不是证书的问题
ttxxyy112233
ttxxyy112233
Jan 1, 2018
81
安卓能改不?
SourceMan
SourceMan
Jan 1, 2018
82
@VShawn #79 你看到的是作弊,我们看到的是技术探讨和研究。
如果一键脚本,刷到 9999 又如何

楼主给出了脚本实现,并没有指出运行方法,需要你自己去 HTTPS 解密,拿到 session_id,这是学习的第一步
其二,运行脚本,我想很多人发现缺依赖 run 不起来就会放弃吧。
最后,玩完了,是不是可以回去看看整个脚本的思路,发现并不复杂,只是你可以稍微了解下小程序的运行机制
pacino
pacino
Jan 1, 2018
83
加 SSL 钢钉了吧,截不到数据了。
Brucepac
Brucepac
Jan 1, 2018
84
哈哈,变成 2018 了,😆
ErnieSauce
ErnieSauce
Jan 1, 2018
85
@idisreg 我用这个下载部分可以 但是还有一些出现 404 我在想是不是前方的 url 不同
fe619742721
fe619742721
Jan 1, 2018
86
@Wolther47 嗯嗯 我这已经更新了
kkm
kkm
Jan 1, 2018
87
@Brucepac 怎么拿到 session_id 啊
kkm
kkm
Jan 1, 2018
88
SessionID: DC 6E E7 76 CD BF 39 是这个 Sessionid 吗?有点没搞懂
289450031
289450031
Jan 1, 2018
89
@SourceMan 拿到 session_id 后续怎么操作,小白不太看得懂
kkm
kkm
Jan 1, 2018
90
@289450031 你怎么拿到的? o(╥﹏╥)o
yagnqionggo
yagnqionggo
Jan 1, 2018❤️1
91
发下重要的有几个点
1. 能抓包下载到 wxapkg
2. 能解开 wxapkg
3. 能阅读代码找到加密方式
wzw
wzw
Jan 1, 2018
92
居然是 nodejs 版本, 什么时候来个 python
rswl
rswl
Jan 1, 2018
93
启动不了
Andsoon
Andsoon
Jan 1, 2018
94
十分赞同
Andsoon
Andsoon
Jan 1, 2018
95
@rswl node 运行脚本
Rubbly
Rubbly
Jan 1, 2018
96
加密的 key 是 session_id,有点意思 /doge
bravecoder
bravecoder
OP
Jan 1, 2018
97
@wzw 最早一版是 py 的,可以在 gist 的修改历史里看到。后面 py 版加解密有点问题,拿 node 重写了,有兴趣你可以改改。
rswl
rswl
Jan 1, 2018
98
@Andsoon 不是用微信开发者工具启动吗
bravecoder
bravecoder
OP
Jan 1, 2018❤️1
99
wzw
wzw
Jan 1, 2018
100
@bravecoder 居然可以看到源码. 不改了, node 挺好.

居然可以下载小程序,我的抓紧时间抓几个下来学习.

如何看下面 2 个参数?
{appid} 为小程序码, {version_num} 为 版本号
1  2  3  4  5  
❮ ❯
About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4775 Online   Highest 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 118ms · UTC 05:49 · PVG 13:49 · LAX 21:49 · JFK 00:49
♥ Do have faith in what you're doing.