1. 程式人生 > >微信跳一跳 可以直接更改分數, POST 請求沒有校驗

微信跳一跳 可以直接更改分數, POST 請求沒有校驗

重啟 微信 chrome 蘋果 版本 weixin for 發現 AR

這兩天逛 v 站出現了一眾微信跳一跳 ‘AI‘,已經被刷屏了……

  • https://www.v2ex.com/t/418833
  • https://www.v2ex.com/t/418775
  • https://www.v2ex.com/t/418467
  • https://www.v2ex.com/t/418785
  • https://www.v2ex.com/t/419011
  • https://www.v2ex.com/t/418831
  • https://www.v2ex.com/t/419005
  • https://www.v2ex.com/t/418905
  • https://www.v2ex.com/t/418982

大致思路都是通過計算兩點距離,模擬點擊起跳來方式來實現的,

可是作為不越獄的蘋果黨,手裏又沒安卓機,看著被刷屏刷榜,非常不爽啊

想著抓個包看看能不能模擬下網絡請求刷分,結果 ……

發現可以直接偽造 POST 請求刷分

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

目前比較麻煩的是

- [ ] 需要先抓包拿到 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 文件:

https://gist.github.com/thedreamwork/01691af73eeda292e7327bc6bd3e1d08

更正寫錯的地方

  • 去 charlesproxy 裏查看抓到的請求, https://mp.weixin.qq.com/wxagame/wxagame_init url 的請求,請求 json 裏包含 session_id
  • 能夠正常解 小程序 wxapkg 包的代碼: https://gist.github.com/feix/32ab8f0dfe99aa8efa84f81ed68a0f3e

感興趣的可以把 小程序 的代碼下下來,解包在本地運行玩玩

  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 調整後再看,邏輯其實蠻清晰的

微信跳一跳 可以直接更改分數, POST 請求沒有校驗