本文轉載于:https://www.freebuf.com/vuls/371936.html
準備工作
因為目標站點只能用微信打開,微信又不能調試看代碼。這里推薦可以使用pc端舊版微信3.2.1,具體方法放鏈接里:
https://blog.csdn.net/qq_45863248/article/details/127688137
需要注意的是,如果作者方法未生效,可以把pak文件放微信安裝目錄再重啟試試。
看到Show DevTools就說明成功啦!
開始測試
首先看到微信小游戲先游戲流程先走一遍抓個包。在手機微信上點擊開始游戲:
把上面的圖形對應滑到下面的棒冰上制作成功棒冰+1
每制作一根棒冰發送一個包(我這里制作了兩個):
頁面倒計時結束后,變量boxNum統計制作了多少根棒冰,然后發送
這里我們看到boxNum參數是加密了的,有理由懷疑最終制作個數就是由boxNum來控制的
打開pc端舊版微信調試工具,全局搜索,發現并未找到這個變量
懵了,我還以為出了什么問題,反復找了半天,發現也并沒有游戲相關的js。在舊版pc端微信點開始游戲抓包,終于是發現了game.js,全局搜索boxNum,居然在這里。與之前不同的是,它不會一次性加載顯示所有js,游戲開始后才加載的。
分析加密邏輯,直接找f函數,搜索function f:
發現是AES加密,自定義了icon1,icon2兩個未知變量,需要加密就必須知道這兩個變量,同樣,在這個game.js和之前的js里均未搜到這兩個變量。于是游戲里繼續抓包,發現rem.js,看到icon1、icon2均是固定的。
這下好辦了,直接本地環境搭起來,先試試開頭的我制作的棒冰數量2加密與數據包對比一下。
完全一樣!測試結束。