V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
bravecoder
V2EX  ›  分享创造

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

  bravecoder · 2017-12-31 21:29:48 +08:00 · 86488 次点击
这是一个创建于 1684 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

第 1 条附言  ·  2017-12-31 22:02:32 +08:00
目前比较麻烦的是

- [ ] 需要先抓包拿到 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 文件:
第 2 条附言  ·  2018-01-01 01:03:12 +08:00

更正写错的地方

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

  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 调整后再看,逻辑其实蛮清晰的

第 3 条附言  ·  2018-01-01 10:24:34 +08:00

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

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

大家悠着点玩 😜

第 4 条附言  ·  2018-01-01 15:05:53 +08:00

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

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

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

第 5 条附言  ·  2018-01-02 18:47:40 +08:00

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

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

416 条回复    2018-01-22 10:49:10 +08:00
1  2  3  4  5  
artandlol
    201
artandlol  
   2018-01-02 11:30:34 +08:00   ❤️ 2
还挺火的 写个我用的流程

//最简单的 post 版本方法
//jingslunt#qq.com 20180102
1 安卓端安装 packet capture
2 打开微信跳一跳游戏 不动
3 切换到 packet capture 抓取微信跳一跳( ssl )的 session_id,复制下来
4 chrome 安装浏览器插件 http://tampermonkey.net/
5 新建一个脚本 内容
6 修改脚本的 session_id 参数 保存启用
7 访问 https://mp.weixin.qq.com
8 查看排名

跨平台傻瓜式的见#181 楼
ycmchong
    202
ycmchong  
   2018-01-02 11:32:08 +08:00
@satanandroid 拿到 sessionid 了,这段代码需要什么环境运行,不懂 js~
ycmchong
    203
ycmchong  
   2018-01-02 11:32:26 +08:00
0.0
q409195961
    204
q409195961  
   2018-01-02 11:33:56 +08:00
楼主这头像,似曾相识
artandlol
    205
artandlol  
   2018-01-02 11:34:30 +08:00
请不要在每一个回复中都包括外链,这看起来像是在 spamming === 好吧
qsnow6
    206
qsnow6  
   2018-01-02 11:34:32 +08:00
@satanandroid #200 好像只有当前的分数大于历史最高分才会发送这个包?
artandlol
    207
artandlol  
   2018-01-02 11:36:18 +08:00


被降权了吗
DANG
    208
DANG  
   2018-01-02 11:37:05 +08:00
成功了,非常感谢!
ycmchong
    209
ycmchong  
   2018-01-02 11:38:03 +08:00
satanandroid
    210
satanandroid  
   2018-01-02 11:41:02 +08:00
@ycmchong node 环境 npm
hyndaniel
    211
hyndaniel  
   2018-01-02 11:46:27 +08:00   ❤️ 1
2018 年 1 月 2 日 11:46:23 提交成功
TanninS
    212
TanninS  
   2018-01-02 11:46:50 +08:00
@finab
重新 build path 以后好像没有变化?
该怎么操作呢
bogon:~ tannins$ export NODE_PATH=/usr/local/lib/node_modules/
bogon:~ tannins$ node wx_t1t_hack.js

###
### The "request" library is not installed automatically anymore.
### But required by "request-promise".
###
### npm install request --save
###

/Users/tannins/node_modules/request-promise/lib/rp.js:23
throw err;
^
swim2sun
    213
swim2sun  
   2018-01-02 11:57:10 +08:00
Post 之后, 一切变得索然无味...
TanninS
    214
TanninS  
   2018-01-02 11:58:48 +08:00
@satanandroid
老哥,安装完 node 和 npm 以后,就直接在终端输入
npm install crypto-js request-promise
node wx_t1t_hack.js
就可以了吗
lyf362345
    215
lyf362345  
   2018-01-02 12:12:40 +08:00
@TanninS ###
### The "request" library is not installed automatically anymore.
### But required by "request-promise".
###
### npm install request --save
###

看下提示啊老哥, npm install request....
preach
    216
preach  
   2018-01-02 12:18:21 +08:00
@idisreg 解压之后小程序开发者工具无法运行啊 求私 微信
TanninS
    217
TanninS  
   2018-01-02 12:18:34 +08:00
@lyf362345

我知道他 save 了,但是后面还是报错。你们都是无压力直接运行这个 js 的嘛?

Error: Cannot find module 'request'
at Function.Module._resolveFilename (module.js:555:15)
at Function.Module._load (module.js:482:25)
at Module.require (module.js:604:17)
at require (internal/module.js:11:18)
ycmchong
    218
ycmchong  
   2018-01-02 12:24:46 +08:00
怎么看自己是否修改成功呀
lniwn
    219
lniwn  
   2018-01-02 12:26:34 +08:00 via iPhone
@TanninS 需要安装 request 库,不知为何所有教程里都没提到,所以我猜测这个库可能是做 nodejs 开发的必备库,像我这种非 nodejs 开发,就要手动安装了
npm install request --save
TanninS
    220
TanninS  
   2018-01-02 12:34:54 +08:00
2018 年 1 月 2 日 12:34:11 提交成功
TanninS
    221
TanninS  
   2018-01-02 12:35:40 +08:00
@lniwn
原来是这样,哈哈哈,我不知道这是个安装库的命令
成功了,感谢!
titi14gj
    222
titi14gj  
   2018-01-02 12:37:44 +08:00 via iPhone
留个言上电视
YLGG
    223
YLGG  
   2018-01-02 12:51:02 +08:00
好像能看到 session_id 了 不过也是好长 怎么解密?
EXE
    224
EXE  
   2018-01-02 13:04:35 +08:00
排行榜已经被 10 万刷屏了。。。
YLGG
    225
YLGG  
   2018-01-02 13:07:55 +08:00
@idisreg 能帮下几个实例不~挺需要的~
qiayue
    226
qiayue  
   2018-01-02 13:08:16 +08:00
@preach 小程序无法直接运行,因为解压后的不是最初的源码
小游戏可以运行
ycmchong
    227
ycmchong  
   2018-01-02 13:10:47 +08:00
感谢楼主,已经成功!
li746224
    228
li746224  
   2018-01-02 13:22:05 +08:00
这个厉害了,已测试,13:22 成功
dewi
    229
dewi  
   2018-01-02 13:28:10 +08:00
@artandlol 想问下层主

// console.log('passWord', passWord)
// console.log('sessionId', sessionId)
// console.log('key', key)

这三个只用填写 sessionId 那一行就可以了是吗?
fadaixiaohai
    230
fadaixiaohai  
   2018-01-02 13:28:13 +08:00
成功,厉害了
artandlol
    231
artandlol  
   2018-01-02 13:32:00 +08:00 via iPhone
@dewi 在第一个 2018 下一行
yefuchao
    232
yefuchao  
   2018-01-02 13:48:31 +08:00
@ycmchong gist 需要代理才能打开。
WendellSun
    233
WendellSun  
   2018-01-02 13:53:29 +08:00
成功,非常感谢。
lixiangzaizheli
    234
lixiangzaizheli  
   2018-01-02 13:55:41 +08:00
查水表了
fhy1994
    235
fhy1994  
   2018-01-02 14:01:10 +08:00
亲测成功
json19920123
    236
json19920123  
   2018-01-02 14:20:50 +08:00
已测试,14:20 成功
krfalcon
    237
krfalcon  
   2018-01-02 14:51:52 +08:00
亲测成功
aiwmao
    238
aiwmao  
   2018-01-02 15:17:12 +08:00
下载小程序变 404 了。。
ycmchong
    239
ycmchong  
   2018-01-02 15:33:13 +08:00
测试了上限是 10W,想刷个 2018521,结果...这个是不是没法往低了刷...
rover5056
    240
rover5056  
   2018-01-02 15:34:38 +08:00
15.34 成功
satanandroid
    241
satanandroid  
   2018-01-02 15:50:57 +08:00
wget

下载不了 求 src 楼主能发一份你下好的么
zz233333zz
    242
zz233333zz  
   2018-01-02 15:55:00 +08:00
@krfalcon 上面樓里有圖片,surge 里有 https 解析抓取,生成證書并添加信任,https 主機那裡添加*.qq.com
記得在設置證書里確認信任證書
Dashit
    243
Dashit  
   2018-01-02 15:59:24 +08:00
提交成功排行版怎么不刷新了。是不是失效了。
odirus
    244
odirus  
   2018-01-02 16:01:35 +08:00
咨询各位大神,charlesproxy 的证书应该是属于那种自签名的吧

为什么能够抓取到 https 的内容呢?难道是微信客户端直接忽略了证书错误?
kyrkwode
    245
kyrkwode  
   2018-01-02 16:14:49 +08:00
@qiayue 大哥,现在下载源码是 404 了,能不能打包一份放到网盘里
xinlai
    246
xinlai  
   2018-01-02 16:20:38 +08:00
16.19 成功
qiayue
    247
qiayue  
   2018-01-02 16:32:44 +08:00
@odirus 因为在手机端也需要安装他的证书,并且信任
jinue9900
    248
jinue9900  
   2018-01-02 16:36:13 +08:00   ❤️ 2
16.35 分成功,不懂可以提问,摸索了好久了
odirus
    249
odirus  
   2018-01-02 16:40:27 +08:00
@qiayue 感谢,我忽略了这一点
cheny95
    250
cheny95  
   2018-01-02 17:07:42 +08:00
@jinue9900 输入 server session ID 是形如 04:31:83:B7:50。。。。这样的。
依赖安装好,直接运行代码后 crash。。

求解?
Corn665353
    251
Corn665353  
   2018-01-02 17:18:55 +08:00
源码没了貌似?
qsnow6
    252
qsnow6  
   2018-01-02 17:20:00 +08:00
jinue9900
    253
jinue9900  
   2018-01-02 17:22:20 +08:00
@cheny95 不是的 是一串 base64 加密的字符串
iyour
    254
iyour  
   2018-01-02 17:22:56 +08:00
17:22 成功 😄Happy new year
jinue9900
    255
jinue9900  
   2018-01-02 17:25:08 +08:00
@cheny95 ios 的 安装完证书要去 设置-通用-关于本机-拉到最下面有个证书信任设置,把 charles 打开 然后杀掉微信,打开微信,打开小程序后面就有尾巴出来了。然后你在看一下有个 session_id 的玩意在里面
ChenPeiPei
    256
ChenPeiPei  
   2018-01-02 17:26:59 +08:00
@cheny95 session_id 错了..可以在 charles 下 command+f 搜索 session_id,是一个 base 64 字符串的格式
xinlai
    257
xinlai  
   2018-01-02 17:27:18 +08:00
17.27 成功
JKeita
    258
JKeita  
   2018-01-02 17:37:42 +08:00
2018/1/2 17:36 提交成功
u3u
    259
u3u  
   2018-01-02 17:48:04 +08:00
17:47 成功~
skinqis
    260
skinqis  
   2018-01-02 17:52:43 +08:00
成功,感谢
jxst973393
    261
jxst973393  
   2018-01-02 18:01:09 +08:00 via iPhone
The "request" library is not installed automatically anymore.

But required by "request-promise".

npm install request --save

/Users/call/node_modules/request-promise/lib/rp.js:23
throw err;
^

第一次成功了,之后就是这样的提示,这是什么情况,我也安装了一 npm install request — save 啊
jinue9900
    262
jinue9900  
   2018-01-02 18:20:03 +08:00
@jxst973393 看下 node_modules 里面有没有 request-promise 有的话删掉 node_modules 重新执行一下就好了
Telegram
    263
Telegram  
   2018-01-02 18:25:30 +08:00
@cheny95 #250 你的 sessionID 错了,看楼主第 4 条附言
madm4n
    264
madm4n  
   2018-01-02 18:28:03 +08:00
@JKeita nodejs 成功输出 2018! Happy new year!,但是 微信里怎么刷新分数呢?
madm4n
    265
madm4n  
   2018-01-02 18:29:26 +08:00
兄弟们,nodejs 成功输出 2018! Happy new year!。。。但是接下来怎么操作才会微信里跳一跳刷新高分
cheny95
    266
cheny95  
   2018-01-02 18:35:43 +08:00 via iPhone
@jinue9900 谢谢 加入信任 成功。18:30
cheny95
    267
cheny95  
   2018-01-02 18:35:52 +08:00 via iPhone
@ChenPeiPei 已成功 谢谢
cheny95
    268
cheny95  
   2018-01-02 18:36:02 +08:00 via iPhone
@Telegram 👌啦
谢谢
dannygeek00
    269
dannygeek00  
   2018-01-02 19:17:58 +08:00
__init__() got an unexpected keyword argument 'ouput_to_new_tab'
[cmd: None]
[dir: /Users/qihuandaxia/Desktop]
[path: /usr/bin:/bin:/usr/sbin:/sbin]
[Finished]
dannygeek00
    270
dannygeek00  
   2018-01-02 20:09:39 +08:00
成功了 2018-01-02 20:09
Tinet
    271
Tinet  
   2018-01-02 20:41:48 +08:00
2018-01-02 20:41 亲测有效
Aaronxdd
    272
Aaronxdd  
   2018-01-02 20:48:26 +08:00
@jinue9900 获取 session_id 后咋办
Aaronxdd
    273
Aaronxdd  
   2018-01-02 20:49:17 +08:00
@jinue9900 gist.github 不好访问
JohnTsemin
    274
JohnTsemin  
   2018-01-02 20:53:35 +08:00
成功,设置分数为 1926
Aaronxdd
    275
Aaronxdd  
   2018-01-02 20:56:42 +08:00
@JohnTsemin gist.github 上的代码获取不到啊,help
JohnTsemin
    276
JohnTsemin  
   2018-01-02 22:01:19 +08:00
@Aaronxdd github 又没被墙,直接旁边有个显示 gist 代码按钮,点一下就行
fuergaosi
    277
fuergaosi  
   2018-01-02 22:12:29 +08:00
@artandlol 找不到 session_id 抓包抓到的几个 ssl 打开都是 no data
sunfanteng
    278
sunfanteng  
   2018-01-02 22:18:27 +08:00
@bravecoder 请问,用 python 的解析完 wxapkg 文件后,page 下面怎么都是.html 文件,跟小程序的文件不一样呢?
muziki
    279
muziki  
   2018-01-02 22:25:28 +08:00 via iPhone
@fuergaosi ios 先在 关于 最下面信任 Charles 证书,之后在 Charles 的 proxy 设置里设置 sslproxt 加入*.qq.com ,之后重启 WeChat,进小游戏。最后在 Charles 中 ctrl+f 搜索 session_id
sunfanteng
    280
sunfanteng  
   2018-01-02 22:33:14 +08:00
@idisreg 请问,你的 wxapkg unpack 之后,page 里面的文件格式是和小程序的一样吗?为啥我的全是 html 文件。
callen
    281
callen  
   2018-01-02 22:35:23 +08:00
@jinue9900 按照您的方法是了,然后出现了这个 /Users/call/node_modules/request-promise/lib/rp.js:23
throw err;
^

Error: Cannot find module 'boom'
jxst973393
    282
jxst973393  
   2018-01-02 22:54:29 +08:00 via iPhone
@sunfanteng 你好,现在怎么才能下载小程序源码?我试了试楼主的好像现在下载不成了
yangceng
    283
yangceng  
   2018-01-02 23:05:25 +08:00
Error: Cannot find module 'crypto-js'
at Function.Module._resolveFilename (module.js:536:15)
at Function.Module._load (module.js:466:25)
at Module.require (module.js:579:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (D:\workspace\code\YOUWANNAPIECEME\wx_t1t_hack.js:1:78)
at Module._compile (module.js:635:30)
at Object.Module._extensions..js (module.js:646:10)
at Module.load (module.js:554:32)
at tryModuleLoad (module.js:497:12)
at Function.Module._load (module.js:489:3)
zeke
    284
zeke  
   2018-01-02 23:07:12 +08:00
楼主,这个 js 源码应该是通过 root 后查看微信 app 里的文件得到的吧?
微信用的是 mmtls 协议,有加密,通过抓包的化是不可能获取到的。
yangceng
    285
yangceng  
   2018-01-02 23:11:38 +08:00
PS D:\workspace\code\YOUWANNAPIECEME> npm install crypto-js request-promise
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN [email protected] requires a peer of [email protected]^2.34 but none is installed. You must install peer dependencies yourself.
npm WARN [email protected] requires a peer of [email protected]^2.34 but none is installed. You must install peer dependencies yourself.
npm WARN [email protected] No description
npm WARN [email protected] No repository field.

+ [email protected]
+ [email protected]
added 8 packages in 16.447s

这一步之后是啥,各位大佬
Nathanzheng
    286
Nathanzheng  
   2018-01-02 23:15:09 +08:00
天天想着作弊。。。
yangceng
    287
yangceng  
   2018-01-02 23:22:29 +08:00
已搞定
bl5c
    288
bl5c  
   2018-01-02 23:27:42 +08:00
测试成功~谢谢大佬
exalex
    289
exalex  
   2018-01-03 00:04:49 +08:00
改完有点怕怕 微信被封了怎么办。。。
GakkiYui
    290
GakkiYui  
   2018-01-03 00:24:01 +08:00 via iPhone
已成功,谢谢大佬
zcdll
    291
zcdll  
   2018-01-03 01:26:28 +08:00
3 号凌晨之后貌似不能用了,返回成功,但是分数不变。
aiwmao
    292
aiwmao  
   2018-01-03 02:34:08 +08:00
感谢老铁,又阔以(偷)下小程序了
haige268
    293
haige268  
   2018-01-03 08:56:49 +08:00 via Android
现在好像已经凉了!大家试试还有成功的吗?
lunatic5
    294
lunatic5  
   2018-01-03 09:00:06 +08:00
@haige268 一首凉凉送给老铁
Akill47
    295
Akill47  
   2018-01-03 09:01:41 +08:00
分数没变...
DingJZ
    296
DingJZ  
   2018-01-03 09:05:58 +08:00
errcode 108
mochanight
    297
mochanight  
   2018-01-03 09:28:13 +08:00
应该是算法改了。
fsql
    298
fsql  
   2018-01-03 09:28:24 +08:00
这个方法拉闸了
ariesjia
    299
ariesjia  
   2018-01-03 09:29:49 +08:00
他只要家一个分数和时间有关系 后端就可以校验
pangtong
    300
pangtong  
   2018-01-03 09:36:00 +08:00
@sunfanteng #280 我没什么特权,你是怎么样我当然就是怎么样了...
@YLGG #225 自己下吧,下下来也没什么用,里面代码好像是经过压缩的,很乱,而且有的文件是 .html , 而微信小程序的文件应该是 .wxml , 没开发过小程序,不是很懂...
@preach #216 小程序没法直接运行就对了,那肯定是无法直接运行的...
1  2  3  4  5  
关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2429 人在线   最高记录 5497   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 60ms · UTC 12:10 · PVG 20:10 · LAX 05:10 · JFK 08:10
Developed with CodeLauncher
♥ Do have faith in what you're doing.