V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
爱意满满的作品展示区。
bravecoder

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

  bravecoder · Dec 31, 2017 · 95131 views
This topic created in 3038 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
    1
lhx2008  
   Dec 31, 2017
只能刷到 999
bravecoder
    2
bravecoder  
OP
   Dec 31, 2017
@lhx2008 还没找到为啥被限制了 ……
Kahnn
    3
Kahnn  
   Dec 31, 2017
怎么抓包拿到 sesseion_id
mochanight
    4
mochanight  
   Dec 31, 2017 via iPhone
我抓了看到是加密的阿。。。。
0754
    5
0754  
   Dec 31, 2017
666
bravecoder
    6
bravecoder  
OP
   Dec 31, 2017
bravecoder
    7
bravecoder  
OP
   Dec 31, 2017
@mochanight 只是简单加密了,二期前端代码里有加密的逻辑,关键是后端没有校验 🤪
goodbest
    8
goodbest  
   Dec 31, 2017   ❤️ 1
ZE3kr
    9
ZE3kr  
   Dec 31, 2017 via iPhone
随便拿一个支持 HTTPS 的抓包工具就行了,我用 Surge 抓的
ZE3kr
    10
ZE3kr  
   Dec 31, 2017 via iPhone
我估计微信有设置游戏时长小于一定时间不能到 1000 以上吧
imwxxxcxx
    11
imwxxxcxx  
   Dec 31, 2017
难怪我之前改 1 万分以上都没成功过,待会试试。
Tink
    12
Tink  
PRO
   Dec 31, 2017 via iPhone
为啥我抓不到 servicewechat.com 的请求
chainchan
    13
chainchan  
   Dec 31, 2017
试了下不行, {u'base_resp': {u'errcode': 108}}
怀疑是 action_data 不完整
crab
    14
crab  
   Jan 1, 2018
跪了。pycrypto python3.5 vs2017
ZE3kr
    15
ZE3kr  
   Jan 1, 2018 via iPhone
现在好像不行了
star1cjl
    16
star1cjl  
   Jan 1, 2018
我是失败了
bravecoder
    17
bravecoder  
OP
   Jan 1, 2018   ❤️ 1
@crab 我是拿 python2 跑的……,python3 加解密要处理下转换 bytes ⇌ string
ZE3kr
    18
ZE3kr  
   Jan 1, 2018 via iPhone
@bravecoder 之前可以,现在一直不行了,你 2018 之后成功过么
bravecoder
    19
bravecoder  
OP
   Jan 1, 2018   ❤️ 1
@ZE3kr 好像是微信服务器有问题? 503 了……
chainchan
    21
chainchan  
   Jan 1, 2018
实测目前最高只能刷到 500 分了。
pacino
    22
pacino  
   Jan 1, 2018
并没有 servicewechat.com 请求
ahu
    23
ahu  
   Jan 1, 2018
@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
    24
bravecoder  
OP
   Jan 1, 2018
@ZE3kr 今天居然升级了到 version 4 了,🤔。我这改完 referer 好使,不过 好像限制加强了,500 最高 ……
bravecoder
    25
bravecoder  
OP
   Jan 1, 2018
aino
    26
aino  
   Jan 1, 2018
我 打不开
twm
    27
twm  
   Jan 1, 2018
{u'base_resp': {u'errcode': 108}}
slwl
    28
slwl  
   Jan 1, 2018
是不是已经失效了? {u'base_resp': {u'errcode': -2}}
NLL
    29
NLL  
   Jan 1, 2018 via iPhone
可以的
O3YwA1ENkb7i35XJ
    30
O3YwA1ENkb7i35XJ  
   Jan 1, 2018   ❤️ 4
1. 是有加密的, 算法是 AES, 加密的 KEY 是 session_id
2. 最高分是 100000 分(10 万分),并不是 999
3. 如果改的分数比较离谱会被官方直接给你清 0,而且如果多次改,可能会进黑名单,然后就是永久 0 分了(别问我是怎么知道的 /捂脸)
bravecoder
    31
bravecoder  
OP
   Jan 1, 2018
@twm @slwl 起来发现跳一跳又发新版本了, py 操作 aes 好像有点问题,速撸了个 js 版……
bravecoder
    32
bravecoder  
OP
   Jan 1, 2018
@xqin 😂 厉害了,还没试过刷非常高的分。微信维护升级特别快,刷分的漏洞估计很快就会被堵住了…
hobbyliu
    33
hobbyliu  
   Jan 1, 2018 via Android
@bravecoder 新版链接求
chocolatesir
    34
chocolatesir  
   Jan 1, 2018 via Android
@xqin 清零只是因为周一的原因吧。
qiayue
    35
qiayue  
PRO
   Jan 1, 2018
@bravecoder 123.125.9.32 这个服务器是你的还是微信的?
uglyer
    36
uglyer  
   Jan 1, 2018
想知道如何获取 appid.(滑稽
qiayue
    37
qiayue  
PRO
   Jan 1, 2018
@uglyer appid 有时候作者自己就会公布,因为公众号绑定小程序必须知道 appid
uglyer
    38
uglyer  
   Jan 1, 2018
@qiayue 看了一下下载的包实际上是分发的小程序,这个 ip 猜测是一个运营商的缓存服务器.
qiayue
    39
qiayue  
PRO
   Jan 1, 2018
感谢 @bravecoder,我根据你的帖子搞了一个大新闻
http://mp.weixin.qq.com/s/9ZQUL6UcYcBJK-ZTUjm7jQ
qiayue
    40
qiayue  
PRO
   Jan 1, 2018
我用我自己的小程序 appid 和 版本号的确可以下载
O3YwA1ENkb7i35XJ
    41
O3YwA1ENkb7i35XJ  
   Jan 1, 2018
@chocolatesir 不是因为周一,因为我是在游戏出来的当天下午就把分数改成最高了(其实当时是输入了好多个 6,但结果是分数只有 100000),然后到晚上的时候分数变成 0 了.又来改了几次,然后就进黑名单了.

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

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

更加关心能够拿到小程序源代码,这个估计有新的姿势
ErnieSauce
    72
ErnieSauce  
   Jan 1, 2018
@idisreg 请问 http://123.125.9.32/resstatic.servicewechat.com/ 这两个地方需要改动吗?如果需要怎么获取,对应的是什么?谢谢
564425833
    73
564425833  
   Jan 1, 2018 via iPad
已撸,谢谢楼主
fe619742721
    74
fe619742721  
   Jan 1, 2018 via iPhone
@Wolther47 额,我这边排行榜数据没有更新。。。
pangtong
    75
pangtong  
   Jan 1, 2018   ❤️ 1
@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
    76
qiayue  
PRO
   Jan 1, 2018
经过测试,现在已经无法直接下载了
Deeer
    77
Deeer  
   Jan 1, 2018
可以啊,刚下好
Deeer
    78
Deeer  
   Jan 1, 2018
为什么解压出来,项目报错说没有 app.json
VShawn
    79
VShawn  
   Jan 1, 2018
为什么要想尽办法去作弊?
Wolther47
    80
Wolther47  
   Jan 1, 2018
@fe619742721 是的,似乎数据更新有延迟,不知道是不是证书的问题
ttxxyy112233
    81
ttxxyy112233  
   Jan 1, 2018
安卓能改不?
SourceMan
    82
SourceMan  
   Jan 1, 2018
@VShawn #79 你看到的是作弊,我们看到的是技术探讨和研究。
如果一键脚本,刷到 9999 又如何

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

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

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