微信小游戲跳一跳作弊方法

微信小游戲跳一跳作弊方法

本實(shí)現(xiàn)方法代碼來源:https://zhuanlan.zhihu.com/p/32473340

原理粗解

微信小游戲跳一跳,本質(zhì)上時(shí)一個(gè)半離線游戲,它的與服務(wù)器的通信其實(shí)是在于或者在達(dá)到某些超越好友的時(shí)候回下載頭像信息,或者是在最終游戲結(jié)束之后返回游戲結(jié)果給服務(wù)器,或者是獲取現(xiàn)有的排行榜的時(shí)候才會(huì)向服務(wù)器要信息。所以說整個(gè)游戲并不是時(shí)時(shí)與服務(wù)器通信,也就是意味著雙方溝通上下文關(guān)聯(lián)不強(qiáng),我們可以從中加入我們想要修改的數(shù)據(jù),欺騙服務(wù)器,然后成功刷分。

那么這里就存在著這樣一個(gè)漏洞,如果我知道它返回的數(shù)據(jù)的加密方式,獲取到它原有的包的格式設(shè)置,那么我可以仿照這個(gè)包的格式,修改其返回內(nèi)容(也就是最終我們記錄刷新之后的數(shù)據(jù)包)

這里需要欺騙服務(wù)的一個(gè)關(guān)鍵就在于獲取到這個(gè)session_id,也就是服務(wù)器判斷用戶身份的憑證,另一方面微信在公眾號平臺的第三方信息管理那邊給出了它們的通信加密方式是AES,那么再將數(shù)據(jù)經(jīng)過AES加密傳給服務(wù)器,那就達(dá)到了欺騙服務(wù)器修改游戲記錄數(shù)據(jù)的目的。

Packet Capture抓包

作者在原文中說是用fiddler來抓包的,這個(gè)需要手機(jī)和電腦在同一個(gè)網(wǎng)絡(luò)下,比較麻煩,我這里用的是Packet Capture,這個(gè)app 可以針對一個(gè)應(yīng)用進(jìn)行抓包,比較方便。

然后抓包之后,找到我們想要的那個(gè)包,注意要用到的包是類似這樣的:

其實(shí)上面的抓包有用的就最上面那兩個(gè),第一個(gè)是給了我們它的通信的結(jié)構(gòu)體,另一個(gè)就給了我們它的session_id.

然后我們就可以把這些信息放回我們在最上面鏈接里給出的代碼,然后就可以執(zhí)行。

代碼運(yùn)行環(huán)境要求

Python 3.5?

requests?

pycrypto

我實(shí)在Linux上跑的,應(yīng)該windows也可以。

代碼塊

import requests

import json

import time

from Crypto.Cipher import AES

import base64

action_data = { "score": 10086, "times": 666, "game_data": "{}" }

session_id = "5TrXoE7IXtM/Nr7vITnbU9bmR53VH0u8RkVnm6m/Fezg=="

aes_key = session_id[0:16]

aes_iv = aes_key

cryptor = AES.new(aes_key, AES.MODE_CBC, aes_iv)

str_action_data = json.dumps(action_data).encode("utf-8")

print("json_str_action_data ", str_action_data)

#Pkcs7

length = 16 - (len(str_action_data) % 16)

str_action_data += bytes([length])*length

cipher_action_data = base64.b64encode(cryptor.encrypt(str_action_data)).decode("utf-8")

print("action_data ", cipher_action_data)

post_data = {

"base_req": {

"session_id": session_id,

"fast": 1, },

"action_data": cipher_action_data

}

headers = {

"charset": "utf-8",

"Accept-Encoding": "gzip",

"referer": "https://servicewechat.com/wx7c8d593b2c3a7703/3/page-frame.html",

"content-type": "application/json",

"User-Agent": "MicroMessenger/6.6.1.1200(0x26060130) NetType/WIFI Language/zh_CN",

"Content-Length": "0",

"Host": "mp.weixin.qq.com",

"Connection": "Keep-Alive"

}

url = "https://mp.weixin.qq.com/wxagame/wxagame_settlement"

response = requests.post(url, json=post_data, headers=headers)

print(json.loads(response.text))

注釋:

注意上面的程序中是用在Wifi環(huán)境下的,它的User-Agent已經(jīng)給了我們,如果你不是的話,可以根據(jù)抓來的包對headers這一個(gè)結(jié)構(gòu)的內(nèi)容進(jìn)行修改。

另外注意分?jǐn)?shù)超過一萬已經(jīng)被微信禁止了,過高的數(shù)據(jù)會(huì)因?yàn)楫惓6鴦h除,一千以內(nèi)現(xiàn)在還可以。

實(shí)現(xiàn)效果

代碼來源:https://zhuanlan.zhihu.com/p/32473340

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,568評論 19 139
  • python3 代碼 import requests import json import time from C...
    karyuet閱讀 1,775評論 0 0
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,706評論 18 399
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,273評論 6 342
  • 文/賴皮山楂 對你的愛從來不說, 在你面前從來都是云淡風(fēng)輕,沒心沒肺 你說我好像很容易開心 那是我特意把一個(gè)陽光明...
    Fionahahe閱讀 439評論 0 2

友情鏈接更多精彩內(nèi)容