微信小程式《消滅病毒》輔助

  • 2019 年 10 月 6 日
  • 筆記

最近玩了一個比較火的微信小程式,消滅病毒。

遊戲沒有充值的地方,想要升級金幣就得不停的看廣告攢金幣,刷關卡。

後來看到X寶有賣消滅病毒刷金幣的,只需要用戶ID號就可以,就嘗試自己試試。

首先從抓包著手,我比較習慣用fiddler抓包。嘗試模擬器上配置代理抓包,結果模擬器用不了。

沒辦法就用手機鏈接代理抓。

port就是安裝證書時候的埠,保持手機和開fiddler的電腦在同一個網路中。查看電腦的IP地址。在手機的WiFi選項中設置代理電腦IP和埠。此時fiddler已經可以抓到手機中的http數據包了 。

如果需要抓https的數據包,還需要在手機瀏覽器中輸入 " IP地址:8888 "

選擇第二個 ,點擊下載證書,然後安裝好證書就可以抓https的數據包了。

進入正題

用手機抓包,抓到微信進入小程式後的數據包。

分析得出這個包是向伺服器提交用戶數據的數據包,其中有本地儲存的用戶資訊,包括關卡,金幣,磚石,體力等數據。一起發送給伺服器了。其中的sign參數判斷是用來校驗合法性的,uid就是用戶ID判斷某寶的刷金幣點就是在這裡。嘗試直接重放數據包更改用戶ID發現伺服器驗證並沒有通過,猜測數據經過加密放在sign參數中校驗。需要找到加密sign的演算法。

首先反編譯小程式

找到疑似sign加密的演算法

這個js看的有點繞,實在不確定是那一塊進行的sign加密,就把疑似的地方dump下來直接去驗證。

最後找到sign的加密演算法。可以看到是用提交數據的全部內容+openid+wx_appid(這個可以不變)+wx_secret(也可以不變)生成的新sign,然後通過post請求 帶上原來的數據,加上生成的sign發送出去。嘗試發送,返回code:0表示成功了。

之後刪除小程式 ,重新進入小程式 ,發現數據已經刷上了(為的是防止本地有數據默認進入小程式前提交到伺服器,就會覆蓋掉已經刷好的數據)

至此已經實現了想要的目的。

作者:WHITE

來源:Ms08067安全實驗室