搜尋

Marvel RivalsMarvelRivals遊戲修改器

返回清單
切換到指定樓層
通知這文章過時或找檔案 發表主題

[電玩遊戲] 《Marvel Rivals》usermode anticheat 原始碼分析 下載 Pytdon腳本結構整理、UAC檢查機制、魔法盒驗證器

[複製連結]
1
mckogel1212 ( Lv.50 智天使 ) 發表於 昨天 20:19 | 只看該作者 回覆獎勵 |升序瀏覽 |閱讀模式

《Marvel Rivals》usermode anticheat 原始碼分析 快速閱讀精華



  • 🕵️ 這次流出的原始碼揭露了《Marvel Rivals》使用者模式反作弊系統的內部運作邏輯,包含 Pytdon 驗證腳本UAC 權限檢查機制
  • 🔐 核心檔案 magic_box_validator.py 採用 AES 加密與 Base64 編碼,內建 25 種狀態碼判斷系統完整性,防止作弊工具竄改。
  • ⚠️ 原始碼中包含網易內部開發者信箱([email protected]),並曝光 Postman 性能分析系統與 ACSDK 組件的內部 API 端點。



👉 GM後台版 遊戲 推薦 ⬇️⬇️⬇️ 快速玩各種二次元動漫手遊app





前言與風險提醒



這篇文章整理的原始碼來自《Marvel Rivals》(漫威爭鋒)的使用者模式反作弊系統(usermode anticheat)dump 檔案。內容包含 Pytdon 驗證腳本、UAC 權限檢查邏輯,以及網易內部開發工具鏈的組態設定。

  • 重要法律聲明:本文僅作為遊戲安全技術研究與教育用途。原始碼版權歸網易(NetEase)與 Marvel 所有,未經授權散佈、修改或用於商業用途可能觸犯著作權法與電腦犯罪相關法規。
  • 使用風險警告:執行或使用這些腳本繞過遊戲保護機制,極可能導致《Marvel Rivals》帳號永久停權。我們強烈建議僅在離線環境或虛擬機器中進行原始碼分析,切勿在正式伺服器上使用。


magic_box_validator.py 核心驗證機制



在 `Scripts/anticheat/magic_box_validator.py` 這個檔案中,網易實作了一套完整的加密驗證鏈。這個「Magic Box」驗證器主要用來確保遊戲執行環境的完整性,防止記憶體修改或 DLL 注入。

import os
import json
import base64
import time
from enum import IntEnum
from typing import Dict, Any, Optional

import pyaes


class StatusCode(IntEnum):
    SUCCESS = 0
    ENV_VAR_NOT_FOUND = 101
    ENV_VAR_EMPTY = 102
    BASE64_DECODE_ERROR = 201
    BASE64_INVALID_LENGTH = 202
    AES_DECRYPT_ERROR = 301
    AES_PADDING_ERROR = 302
    JSON_DECODE_ERROR = 401
    JSON_INVALID_FORMAT = 402
    MISSING_SEED = 501
    MISSING_VERSION = 502
    MISSING_RESULT = 503
    INVALID_SEED_TYPE = 504
    INVALID_VERSION_TYPE = 505
    INVALID_RESULT_TYPE = 506
    INVALID_RESULT_FORMAT = 507
    SEED_TOO_OLD = 508
    ALGORITHM_VERSION_MISMATCH = 601
    ALGORITHM_RESULT_MISMATCH = 602


DEFAULT_ENCRYPTION_KEY = b"&8pX6'fbXt^4" + b"\x00" * (32 - len(b"&8pX6'fbXt^4"))


從原始碼可以看出幾個關鍵設計:

  • 多層錯誤碼系統:定義了 25 種不同的 StatusCode,從環境變數遺失(101)、Base64 解碼錯誤(201)、AES 解密失敗(301),到演算法版本不匹配(601),提供精確的除錯資訊。
  • AES 加密保護:使用 `pyaes` 函式庫進行加密,預設金鑰為 `&8pX6'fbXt^4` 補零至 32 位元組。這種硬編碼金鑰雖然方便部署,但一旦洩漏就容易被繞過。
  • Base64 編碼層:在 AES 加密之上額外使用 Base64 編碼,增加人工閱讀難度,同時也方便在 JSON 等文字格式中傳輸加密資料。


UAC 權限檢查與系統安全



在 `Scripts/component/acsdk_component.py` 中,網易實作了嚴格的 UAC(使用者帳戶控制)檢查機制。這段程式碼專門用來偵測玩家是否嘗試繞過 Windows 的安全防護,以管理員權限執行遊戲或注入作弊程式。

def check_uac_bypass():

    try:
        compat_layer = os.environ.get("__COMPAT_LAYER", "")
        if compat_layer:
            compat_layer_lower = compat_layer.lower()
            if "runasinvoker" in compat_layer_lower:
                WARN_LOG(
                    f"""[check_uac_bypass] UAC bypass detected: __COMPAT_LAYER={compat_layer}"""
                )
                return True
        compat_layer_runasinvoker = os.environ.get("__COMPAT_LAYER_RUNASINVOKER", "")
        if compat_layer_runasinvoker:
            WARN_LOG(
                "[check_uac_bypass] UAC bypass detected: __COMPAT_LAYER_RUNASINVOKER set"
            )
            return True
        return False
    except Exception as e:
        WARN_LOG(f"""[check_uac_bypass] Error: {e}""")
        return False


這段程式碼主要檢查兩個關鍵的環境變數:

  • __COMPAT_LAYER:當這個變數包含 `runasinvoker` 字串時,表示執行檔正在以相容性模式執行,試圖欺騙系統相信它不需要提高權限。這是常見的 UAC 繞過手法。
  • __COMPAT_LAYER_RUNASINVOKER:這是更具體的標記,直接表明使用了 RunAsInvoker 相容性修正,允許程式以與父進程相同的權限等級執行,通常是為了避免 UAC 彈窗。


除了 UAC 檢查,原始碼還包含 `is_running_as_admin()` 和 `is_uac_enabled()` 兩個函式,分別透過 Windows API 檢查當前是否以管理員身份執行,以及系統的 UAC 功能是否開啟。這些資訊會被回傳到網易的伺服器,用於風險評估和帳號安全分析。

網易內部開發架構整理



這次洩漏的原始碼不僅僅是反作弊模組,還包含了網易內部開發工具鏈的組態設定。在檔案開頭的註解中,出現了兩位網易開發者的內部信箱:



這些信箱屬於網易(NetEase)公司內部域名,證明瞭這些腳本確實來自官方開發環境。原始碼中還包含了一個名為 `postman` 的性能分析系統配置,這是網易內部使用的遊戲性能監控工具。

AGENT_VERSION = '1.4.12'
BASE_URL = 'https://tool.api.postman.nie.netease.com/data_api/v1/postman'
BASE_CHECK_URL = BASE_URL + '/postman_profile_base_check'


從這些配置可以看出,網易的開發架構包含以下幾個關鍵組件:

  • ACSDK (Anti-Cheat SDK):核心反作弊軟體開發套件,負責初始化、心跳檢測(heartbeat)、截圖回傳(screenshot callback)等功能。原始碼顯示它會定期呼叫 `acsdk.call_sdk("hb")` 進行心跳驗證,以及 `acsdk.call_sdk("ss")` 進行螢幕截圖。
  • Postman Profiler:性能分析工具,透過 `BASE_URL` 與網易內部 API 通訊,上傳性能分析資料(profile data)。配置中提到了 `INSTANCE_UPLOAD_INTERNAL_HOST` 和 `INSTANCE_UPLOAD_DEFAULT_HOST`,顯示支援內網與公網兩種上傳模式。
  • WebGM (web game Master):遊戲管理員系統組件,在原始碼中負責接收反作弊事件的回呼,例如 `C_SCREEN_SHOT_BACK` 處理截圖回傳結果,`C_HEATBEAT_LOG` 記錄心跳日誌。


值得注意的是,原始碼中還包含了一個 `magic_box_validator.py` 的引用,這個「魔盒驗證器」使用了一系列魔法數字(Magic Numbers)如 `MAGIC_A = 0x9E3779B97F4A7C15`,這些常數通常用於雜湊演算法或加密簽名,進一步增強了反作弊系統的安全性。

檔案下載點 🔽



本次分析的原始碼檔案已整理成壓縮包,包含 `Scripts/anticheat/*.py`、`Scripts/component/acsdk_component.py` 以及 `Scripts/component/web_gm_component.py` 等關鍵檔案。由於內容涉及遊戲安全機制,下載後請務必在隔離環境中進行研究。



所有站內附件皆會附上安全掃描報告
請會員查看純淨度百分比後判斷使用



相關檔案須知:
取得檔案前,請先詳細閱讀文章內容
避免不必要錯誤與誤會發生。
也可多參考文章討論樓層內容
了解附件檔案相關討論資訊。





常見問題Q&A



Q:這個原始碼洩漏會對《Marvel Rivals》玩家造成什麼影響?
雖然反作弊原始碼公開可能讓作弊開發者更容易找到繞過方法,但現代反作弊系統(如本案例中的 ACSDK)通常具備伺服器端驗證與即時更新能力。網易可以透過更新 `MAGIC_A`、`MAGIC_B` 等加密常數,或調整 `StatusCode` 驗證邏輯,快速抵消原始碼洩漏帶來的風險。

Q:magic_box_validator.py 中的「Magic Box」到底是什麼?
這是網易內部對核心驗證模組的代號。該模組使用 AES-256 加密與自定義的雜湊算法(包含 `MAGIC_A`、`MAGIC_B`、`MAGIC_C` 三個魔法常數)來驗證遊戲檔案完整性。它會檢查環境變數、系統時間戳(Seed)與演算法版本,確保客戶端沒有被修改。

Q:UAC 檢查機制是如何運作的?
遊戲啟動時會呼叫 `check_uac_bypass()` 函式,檢查系統環境變數 `__COMPAT_LAYER` 與 `__COMPAT_LAYER_RUNASINVOKER`。如果發現 `runasinvoker` 字串,表示玩家可能使用相容性模式繞過 UAC 彈窗,此時系統會記錄警告日誌並回傳風險標記。同時也會檢查當前進程是否以管理員身份執行(`IsUserAnAdmin`)。

Q:這些 Pytdon 腳本可以在 Linux 或 Mac 上執行嗎?
理論上 `magic_box_validator.py` 等純 Pytdon 腳本具有跨平臺相容性,但 `acsdk_component.py` 中大量使用了 Windows 專用的 API(如 `ctypes.windll.shell32.IsUserAnAdmin`、`winreg` 模組檢查 UAC 設定)。因此這些反作弊組件實際上只能在 Windows 環境中完整運作,這也符合《Marvel Rivals》PC 版的系統需求。

Q:下載這些檔案會有法律問題嗎?
單純下載原始碼進行安全研究在大多數司法管轄區屬於合法行為,但將原始碼用於開發作弊工具、繞過遊戲保護機制,或散佈修改後的遊戲客戶端,則可能違反《數位千禧年著作權法》(DMCA)或當地類似法規。我們強烈建議將研究範圍限制在本地隔離環境,切勿連線至官方遊戲伺服器。





大家正在看啥


收藏收藏 分享文章到FB上分享
回覆 使用道具 檢舉
複製專屬你的推廣連結:發至FB與各論壇宣傳:累積點數換GP商品 & 藍鑽
每五點閱率就可以兌換藍鑽積分或遊戲點卡 夢遊推廣文章換GP商品

你需要登入後才可以回覆 登入 | 加入會員

本版積分規則

Copyright (C) 2010-2020 夢遊電玩論壇

廣告合作:請直接聯繫我們,並附上您預刊登位置的預算。  

快速回覆 返回頂端 返回清單