《Bodycam》快速閱讀精華
- 🎯 基礎定位:提供 UE5 引擎關鍵全域物件位址(GObjects、GNames、GWorld)與 ProcessEvent 函式索引,適用於版本 5.5.4-0+UE5-Bodycam
- 🧩 結構整理:完整收錄 World、Level、GameState、Controller、Pawn、Character、CameraManager 等核心類別的記憶體偏移量(Offsets)
- ⚠️ 使用須知:本資料僅供技術研究與單機修改使用,線上多人模式使用可能導致帳號永久封鎖,請務必在離線環境操作
前言介紹
《Bodycam》是一款採用次世代 Unreal Engine 5 引擎打造的超寫實多人第一人稱射擊遊戲,由兩位年僅 17 歲與 20 歲的法國獨立開發者製作。遊戲主打極致的擬真畫面與身歷其境的戰術射擊體驗,在 Steam 平臺推出後迅速成為硬核玩家關注的焦點。
本篇文章整理的技術資料適用於遊戲版本 5.5.4-0+UE5-Bodycam(檔案大小 26.58 MB),提供完整的 UE5 引擎逆向工程基礎數據,包括全域物件位址、ProcessEvent 函式索引,以及各核心類別的記憶體偏移量。這些資料對於開發記憶體修改器、內部輔助工具(Internal Cheat)或進行遊戲機制研究具有重要參考價值。
⚠️ 重要提醒:本資料僅供技術研究與單機離線模式使用。在線上多人遊戲中使用記憶體修改工具違反遊戲服務條款,可能導致帳號永久封鎖。請務必在離線環境或私人伺服器中進行測試。
基礎偏移量總覽
以下為 UE5 引擎核心全域物件與函式的基礎位址資訊,這些位址在遊戲版本 5.5.4-0 中經過驗證。透過這些基址,可以定位到遊戲中的物件實例、名稱資料庫與世界情境等核心數據。
| 項目名稱 | 位址(Address) | 特徵碼(AOB Signature) | | GObjects | 0x78A82E0 | 48 8B 05 ? ? ? ? 48 8B 0C C8 4C 8D 04 D1 EB ? 4C 8B C6 41 8B 40 ? 0F BA E0 ? 72 ? 0F 1F 80 | | GNames | 0x7802240 | 48 8D 05 ? ? ? ? EB ? 48 8D 0D ? ? ? ? E8 ? ? ? ? C6 05 ? ? ? ? ? 0F 10 07 | | GWorld | 0x79FEC00 | 48 8B 1D ? ? ? ? 48 85 DB 74 ? 41 B0 | | ProcessEvent | 0x24F0F90 | 48 FF 24 C2 CC CC CC CC CC CC CC CC CC CC CC CC CC 40 53 48 83 EC ? 0F B6 42 [call] | | ProcessEventIndex | 0x4D | N/A |
使用說明:
- GObjects 是 UE5 全域物件陣列的基址,用於遍歷遊戲中所有 UObject 實例
- GNames 是 FName 資料庫的基址,用於整理遊戲中的名稱雜湊
- GWorld 是當前 UWorld 實例的指標,是存取遊戲世界情境的入口點
- ProcessEvent 是 UE5 的藍圖事件呼叫函式,可用於攔截或呼叫遊戲內的事件
核心類別結構體整理
以下列出遊戲中常用的 UE5 引擎類別記憶體佈局偏移量。這些資料對於開發內部輔助工具、記憶體修改器或進行遊戲機制分析至關重要。
World 與 Level 類別
| 命名空間 | 欄位名稱 | 偏移量 | 資料型別 | [tr][td rowspan=5]WorldPersistentLevel | 0x30 | ULevel | | AutdorityGameMode | 0x150 | AGameMode | | GameState | 0x158 | AGameStateBase | | Levels | 0x170 | TArray<ULevel*> | | OwningGameInstance | 0x1B8 | UGameInstance | | Level | Actors | 0x98 | TArray<AActor*> |
GameState 與 GameInstance
| 命名空間 | 欄位名稱 | 偏移量 | 資料型別 | [tr][td rowspan=2]GameStateBaseAutdorityGameMode | 0x298 | AGameModeBase | | PlayerArray | 0x2A8 | TArray<APlayerState*> | | GameInstance | LocalPlayers | 0x38 | TArray<ULocalPlayer*> |
Controller 與 Pawn 階層
| 命名空間 | 欄位名稱 | 偏移量 | 資料型別 | [tr][td rowspan=2]ActorInstigator | 0x180 | APawn | | RootComponent | 0x198 | USceneComponent | [tr][td rowspan=7]ControllerPlayerState | 0x298 | APlayerState | | Pawn | 0x2D0 | APawn | | Character | 0x2E0 | ACharacter | | TransformComponent | 0x2E8 | USceneComponent | | Player | 0x330 | UPlayer | | AcknowledgedPawn | 0x338 | APawn | | PlayerCameraManager | 0x348 | APlayerCameraManager | [tr][td rowspan=3]PawnPlayerState | 0x2B0 | APlayerState | | Controller | 0x0C8 | AController | | Name | 0x368 | FString(僅對其他Pawn可見,非本地玩家) | [tr][td rowspan=2]PlayerStatePawnPrivate | 0x308 | APawn | | PlayerNamePrivate | 0x388 | wchar_t* | [tr][td rowspan=2]CharacterMesh | 0x318 | USkeletalMeshComponent | | CharacterMovement | 0x320 | UCharacterMovementComponent |
CameraManager 與 SceneComponent
| 命名空間 | 欄位名稱 | 偏移量 | 資料型別 | [tr][td rowspan=9]APlayerCameraManagerPCOwner | 0x2A0 | APlayerController | | TransformComponent | 0x2A8 | USceneComponent | | DefaultFOV | 0x2B8 | float | | DefaultOrtdoWidtd | 0x2C0 | float | | DefaultAspectRatio | 0x2C8 | float | | CameraCachePrivate | 0x1320 | FCameraCacheEntry | | LastFrameCameraCachePrivate | 0x1AF0 | FCameraCacheEntry |
| 命名空間 | 欄位名稱 | 偏移量 | 資料型別 | [tr][td rowspan=4]USceneComponentRelativeLocation | 0x128 | FVector | | RelativeRotation | 0x140 | FRotator | | RelativeScale3D | 0x158 | FVector | | ComponentVelocity | 0x170 | FVector | [tr][td rowspan=2]USkeletalMeshComponentComponentToWorld | 0x240 | FTransform | | BoneArray | 0x610 | TArray<FTransform> |
使用教學與注意事項
這些偏移量資料主要用於開發記憶體修改器(Memory Editor)或內部輔助工具(Internal Cheat)。透過這些基址與結構體資訊,開發者可以定位遊戲中的關鍵物件,如玩家控制器、角色位置、攝影機資訊等。
基礎使用流程
- 首先透過特徵碼(AOB Signature)在記憶體中掃描並定位 GObjects、GNames、GWorld 等基址
- 使用 GWorld 偏移取得當前 UWorld 實例,進而存取 PersistentLevel 與 GameState
- 透過 GameState 的 PlayerArray 取得所有玩家狀態,或使用 LocalPlayers 取得本地玩家控制器
- 利用 Controller 與 Pawn 的關聯性,存取角色位置(RootComponent)、骨架網格(Mesh)與攝影機資訊(CameraManager)
技術重點提示
- 版本相容性:本文提供的偏移量適用於初始發布版本(SteamDB Patch 14644603)。雖然特徵碼(AOB)具有跨版本相容性,但具體偏移位址可能隨更新變動
- 結構繼承:注意 Controller 繼承自 Actor,Character 繼承自 Pawn,使用命名空間(namespace)繼承方式引用上層偏移量
- BoneArray 存取:USkeletalMeshComponent 的 BoneArray(偏移 0x610)儲存角色骨架變換資訊,可用於繪製骨架透視(Skeleton ESP)
檔案下載點
以下提供完整的偏移量原始碼檔案下載,包含本文所列的所有命名空間、結構體與偏移定義,方便開發者直接引用至專案中。
所有站內附件皆會附上安全掃描報告 請會員查看純淨度百分比後判斷使用
相關檔案須知: 取得檔案前,請先詳細閱讀文章內容 避免不必要錯誤與誤會發生。 也可多參考文章討論樓層內容 了解附件檔案相關討論資訊。
常見問題Q&A
Q:這些偏移量資料適用於哪個遊戲版本?
這些偏移量主要適用於《Bodycam》初始發布版本(SteamDB 標記為 Patch 14644603)。雖然特徵碼(AOB)通常具有跨版本相容性,但具體的記憶體位址(如 GObjects、GWorld 的絕對位址)可能會隨著遊戲更新而變動,建議每次更新後重新掃描特徵碼確認。
Q:什麼是 ProcessEvent,索引 0x4D 代表什麼意義?
ProcessEvent 是 Unreal Engine 的藍圖事件系統核心函式,負責處理所有 UObject 的事件呼叫(如玩家輸入、碰撞偵測等)。索引 0x4D(十進位 77)代表 ProcessEvent 在 UObject 虛擬函式表(VTable)中的偏移位置,可用於攔截或呼叫遊戲內的事件邏輯。
Q:如何透過這些偏移量取得玩家位置資訊?
取得玩家位置的基本流程如下:首先透過 GWorld(0x79FEC00)取得 UWorld 實例,讀取 PersistentLevel(0x30)取得當前關卡,再從 Level 的 Actors(0x98)陣列中遍歷所有角色。針對每個 AActor,讀取 RootComponent(0x198)取得 USceneComponent,最後讀取 RelativeLocation(0x128)即可取得該 Actor 在遊戲世界中的 FVector(X, Y, Z)座標。
Q:使用這些資料開發修改器會有什麼風險?
《Bodycam》是一款線上多人連線遊戲,使用任何形式的記憶體修改、注入或逆向工程工具都嚴重違反遊戲服務條款(EULA)。一旦被反作弊系統(如 Easy Anti-Cheat 或 BattlEye,若遊戲採用)偵測到異常,可能導致硬體 ID 封鎖(HWID Ban)或帳號永久停權。建議僅在單機離線模式或私人伺服器(若支援)中進行技術研究。
Q:BoneArray 偏移 0x610 可以用來做什麼?
USkeletalMeshComponent 的 BoneArray(偏移 0x610)儲存了角色骨架(Skeleton)中每個骨骼(Bone)的 FTransform(包含位置、旋轉、縮放)資訊。透過讀取這些變換矩陣,可以在螢幕上繪製出角色的骨架透視圖(Skeleton ESP),顯示頭部、脊椎、四肢等關鍵部位的位置,常用於視覺輔助或動畫分析。需要注意的是,這些數據通常只在角色擁有 Skeletal Mesh 且位於視野範圍內時才會更新。
|