《界外狂潮》FragPunk 技術資料快速閱讀精華
- 🎯 遊戲引擎:Unreal Engine 4.26,採用 NeacProtect(網易易盾)反作弊保護
- 🔍 核心簽名:提供 GName 與 GWorld 特徵碼,支援 Cheat Engine 或自製注入器掃描
- 🧬 角色結構:完整整理 ACrimsonCharacter 類別(大小 0x2ED0),包含血量、護甲、死亡狀態等關鍵偏移
- 🦴 骨骼系統:列出 LeftWrist、RightElbow、Head 等完整骨骼名稱對照表
- 📦 SDK 下載:提供完整結構體 SDK Dump 檔案,包含所有偏移量與類別定義
前言介紹
《界外狂潮》(FragPunk)是由網易遊戲開發的 5v5 英雄射擊遊戲,融合快節奏槍戰與獨特的「卡牌」技能系統。對於想要深入研究遊戲機制、開發輔助工具或進行逆向工程分析的技術玩家來說,掌握遊戲的記憶體結構與關鍵偏移量是必要的基礎。
底下我們整理了《界外狂潮》基於 Unreal Engine 4.26 的完整技術資料,包含 GName、GWorld 的特徵碼簽名,以及核心玩家角色類別 ACrimsonCharacter 的詳細結構體整理。這些資料適用於 Cheat Engine 記憶體掃描、自製 DLL 注入或其他逆向工程用途。
重要提醒:使用記憶體修改工具或逆向工程技術可能違反遊戲服務條款,導致帳號永久停權。本文僅供技術研究與教育用途,使用風險請自行承擔。
引擎與反作弊分析
👉 GM後台版 遊戲 推薦 ⬇️⬇️⬇️ 快速玩各種二次元動漫手遊app
《界外狂潮》採用 Unreal Engine 4.26 作為核心引擎,這代表遊戲繼承了 UE4 的記憶體管理模式、UObject 反射系統以及標準的 GName/GWorld 全域指標結構。對於熟悉 UE4 逆向工程的開發者來說,這大幅降低了分析門檻。
然而,遊戲部署了 NeacProtect(網易易盾)作為反作弊保護機制。該系統會監控記憶體異常存取、偵測 DLL 注入行為,並可能對修改記憶體的進程實施封鎖。因此,在進行記憶體分析時,建議在離線模式或受控環境中操作,避免直接於線上模式中進行即時修改。
技術架構重點
- 引擎版本:UE 4.26.2(部分模組可能使用 4.27 功能)
- 編譯類型:Development/Shipping(發行版經過加密與壓縮)
- 字串加密:GName 可能經過 XOR 或位移加密(需動態解密)
- 代碼虛擬化:關鍵函數可能經過 VMProtect 或類似保護
核心簽名(GName & GWorld)
在 UE4 逆向工程中,GName(全域 FName 資料庫)與 GWorld(當前 UWorld 實例)是兩個最關鍵的進入點。底下提供《界外狂潮》經過驗證的特徵碼簽名,可用於 Cheat Engine 的「AOB 掃描」功能或自製記憶體掃描器。
GName 簽名
4C 8D 05 ? ? ? ? EB ? 48 8D 0D ? ? ? ? E8
說明:此簽名指向 FName 資料庫的初始化位置。掃描到後,需整理相對位址(RIP + Offset)以取得實際的 GName 指標。在 NeacProtect 保護下,此區域可能會有 CRC 檢查,建議在掃描時暫停進程或繞過保護機制。
GWorld 簽名
48 8B 1D ? ? ? ? 48 85 DB 74 ? 41 B0 01
說明:GWorld 簽名用於定位當前遊戲世界的 UWorld 實例。此實例包含關卡資訊、Actor 列表(包括玩家、NPC、道具等)。整理此指標後,可以遍歷 AActor 列表找到 ACrimsonCharacter 實例。
使用範例(Cheat Engine)
- 啟動 Cheat Engine 並附加到遊戲進程
- 開啟「記憶體檢視」→「工具」→「AOB 掃描」
- 輸入 GWorld 簽名:`48 8B 1D ?? ?? ?? ?? 48 85 DB`
- 掃描到結果後,右鍵「反組譯此記憶體區域」
- 觀察 `mov rbx,[target]` 指令,計算實際位址:指令位址 + 7 + 相對偏移
ACrimsonCharacter 結構體整理
ACrimsonCharacter 是《界外狂潮》中玩家控制角色的核心類別,繼承自 ACrimsonMovableCharacter。完整類別大小為 0x2ED0 位元組(約 11,984 位元組),包含生命值、護甲、移動狀態、武器資訊等關鍵遊戲數據。
重要成員偏移量對照表
| 偏移量 | 類型 | 名稱 | 說明 | | 0x1058 | float | FallGroundHealtd | 跌落傷害血量 | | 0x105C | float | MaxFallGroundHealtd | 最大跌落傷害承受值 | | 0x1060 | int32 | ArmorId | 護甲 ID | | 0x1070 | float | LifeTimeAfterDeatd | 死亡後存活時間(可救援期) | | 0x1098 | UCrimsonRagdollComponent* | RagdollComponent | 布娃娃物理元件 | | 0x1508 | UCrimsonLogicWeaponBase* | CurrentWeapon | 當前持有武器 | | 0x24D0 | bool | bIsDying | 是否正在死亡 | | 0x24D4 | float | DamageTaked | 已承受傷害值 | | 0x2578 | int64 | PlayerUniqID | 玩家唯一識別碼 | | 0x2584 | float | LastShootTime | 最後射擊時間戳 |
結構體使用範例
若要讀取玩家當前血量與護甲狀態,可透過 GWorld 遍歷 AActor 列表,找到 ACrimsonCharacter 實例後,讀取對應偏移量:
// 讀取跌落傷害血量(可視為臨時護盾)
float FallHealtd = *(float*)(CharacterAddr + 0x1058);
// 讀取護甲 ID
int32 ArmorID = *(int32*)(CharacterAddr + 0x1060);
// 檢查是否正在死亡
bool IsDying = *(bool*)(CharacterAddr + 0x24D0);
骨骼系統與名稱對照
《界外狂潮》使用標準的 UE4 人形骨骼(Humanoid Rig),但採用自定義的骨骼命名規則。底下列出完整的骨骼名稱對照表,適用於骨骼透視(Bone ESP)或自瞄(Aimbot)功能開發。
上肢骨骼
- left_hand:LeftWrist(左手腕)
- left_fore_arm:LeftElbow(左手肘)
- left_arm:LeftShoulder(左肩膀)
- right_hand:RightWrist(右手腕)
- right_fore_arm:RightElbow(右手肘)
- right_arm:RightShoulder(右肩膀)
下肢骨骼
- left_foot:LeftFoot(左腳)
- left_leg:LeftKnee(左膝蓋)
- left_up_leg:LeftThigh(左大腿)
- right_foot:RightFoot(右腳)
- right_leg:RightKnee(右膝蓋)
- right_up_leg:RightThigh(右大腿)
軀幹與頭部
- hips:Pelvis(骨盆/髖部)
- spine:Spine1(脊椎1)
- spine1:Spine1(脊椎1)
- spine2:Spine2(脊椎2)
- neck:Neck(頸部)
- head:Head(頭部)
骨骼讀取範例
若要取得玩家頭部位置用於繪製 ESP,可使用 UE4 的 Mesh 元件函數:
// 取得 Mesh 元件
USkeletalMeshComponent* Mesh = *(USkeletalMeshComponent**)(CharacterAddr + MeshOffset);
// 取得 Head 骨骼位置
FVector HeadPos;
Mesh->GetBoneLocation(FName("Head"), &HeadPos);
SDK Dump 與檔案下載
底下提供完整的《界外狂潮》UE4 SDK Dump 檔案,包含所有結構體、類別定義與偏移量資訊。此 SDK 適用於開發記憶體修改工具、自動化腳本或逆向工程分析。
所有站內附件皆會附上安全掃描報告 請會員查看純淨度百分比後判斷使用
相關檔案須知: 取得檔案前,請先詳細閱讀文章內容 避免不必要錯誤與誤會發生。 也可多參考文章討論樓層內容 了解附件檔案相關討論資訊。
檔案內容說明
- 結構體定義:包含 ACrimsonCharacter、ACrimsonPlayerState、UCrimsonLogicWeaponBase 等核心類別的完整成員變數與偏移量
- 列舉(Enums):EIK_Type、EGameplaySignificanceLevel 等遊戲內部狀態列舉
- 函數位址:部分虛擬函數表(VTable)與成員函數位址資訊
- SDK 命名空間:完整命名空間對照,方便與實際遊戲記憶體對應
常見問題Q&A
Q:這些偏移量與簽名在遊戲更新後是否仍然有效?
A:遊戲每次大型更新(如賽季更新)都可能改變類別結構,導致偏移量變動。GName 與 GWorld 的簽名也可能因編譯器優化或代碼重構而失效。建議在每次遊戲更新後重新使用 Cheat Engine 掃描驗證。
Q:使用這些技術資料是否會導致帳號被封鎖?
A:是的。NeacProtect 反作弊系統會主動掃描記憶體異常、偵測外部進程注入,並對可疑行為進行截圖上傳。即使是讀取記憶體的靜態分析,也可能被視為違規。強烈建議僅在離線模式或專用測試環境中使用這些資料。
Q:如何在 Cheat Engine 中使用提供的 AOB 簽名?
A:首先,確保你使用的是支援 64 位元掃描的 Cheat Engine 7.5 以上版本。步驟如下:
- 開啟 Cheat Engine 並附加到 FragPunk 進程
- 點擊「Memory View」開啟記憶體檢視器
- 按下 Ctrl+Alt+A 開啟自動組譯視窗
- 使用「Template」→「AOB Injection」或直接在記憶體檢視器中使用「Search」→「Find memory」
- 輸入 GWorld 簽名:`48 8B 1D ?? ?? ?? ?? 48 85 DB`,將 `??` 視為萬用字元
Q:ACrimsonCharacter 與 ACrimsonPlayerState 的差別是什麼?
A:ACrimsonCharacter 是實體角色類別,負責處理移動、碰撞、動畫、武器持握等「物理存在」相關的邏輯;而 ACrimsonPlayerState 則儲存玩家狀態如分數、擊殺數、死亡數、隊伍 ID 等「遊戲規則」相關數據。在記憶體分析時,通常先透過 GWorld 找到 GameState,再遍歷 PlayerArray 取得 PlayerState,最後透過 PlayerState 的 Character 指標找到對應的 ACrimsonCharacter。
Q:為什麼有些偏移量顯示為 Pad_XXXX?
A:Pad_XXXX 表示該區域為編譯器自動填充的對齊位元組(Alignment Padding),或保留給未來版本使用的未公開欄位。這些區域通常不應被直接讀取或修改,因為它們可能包含未初始化的記憶體或內部管理資料。在開發記憶體修改器時,應僅使用具名欄位的偏移量,避免存取 Pad 區域以防止遊戲崩潰。
|