快速閱讀精華
- 🔴 核心問題:Dumper-7 無法找到 GWorld 記憶體位址,導致 Dump 失敗
- 💡 關鍵發現:遊戲使用 FProperty 系統,且偵測到 3 個 GWorld 候選位址
- 🎯 解決方向:手動比對候選位址、確認正確的 GWorld 偏移量
- 📦 現成方案:社羣已開發的 Subnautica2CheatMenu.dll 可直接使用
前言:為什麼 GWorld 這麼重要?
如果你正在嘗試為《深海迷航 2:異星水域》開發修改器或 Cheat Engine 腳本,一定會遇到這個頭痛的問題——Dumper-7 找不到 GWorld。GWorld 是 Unreal Engine 遊戲中最重要的全域指標之一,它指向當前遊戲世界的 UWorld 物件,沒有它就無法正確整理遊戲中的物件、座標、狀態等關鍵資料。
這篇文章整理了一位開發者遇到的實際問題,以及社羣提供的解決線索,幫助你跳過踩雷的過程!
問題現象分析
使用 Dumper-7 進行記憶體傾印時,工具成功找到了多個關鍵結構:
- ✅ GObjects 位於偏移 0xcd15500
- ✅ FName::AppendString 位於 0x147A060
- ✅ GNames 位於 0xCC31300
- ✅ 偵測到 3 個 GWorld 候選位址
- ❌ 但最終判定:GWorld WAS NOT FOUND!!!
這代表 Dumper-7 雖然掃描到可能的 GWorld 位置,但無法確認哪一個是正確的,導致 Dump 程序中斷。
技術細節:Dump 輸出解讀
以下是完整的 Dumper-7 輸出結果,供進階使用者參考:
Initializing [Dumper-7]
Started Generation [Dumper-7]!
Dumper-7 by me, you & him
Searching for GObjects...
Found FChunkedFixedUObjectArray GObjects at offset 0xcd15500
Off::InSDK::ObjArray::FUObjectItemSize: 18
Found FName::AppendString at Offset 0x147A060
Found 'FNamePool GNames' at offset 0xCC31300
Off::UObject::Flags: 0x8
Off::UObject::Index: 0xC
Off::UObject::Class: 0x10
Off::UObject::Outer: 0x20
Off::UObject::Name: 0x18
Off::UClass::CastFlags: 0xD8
Off::UStruct::Children: 0x48
Off::UField::Next: 0x28
Off::UStruct::SuperStruct: 0x40
Off::UStruct::Size: 0x58
Off::UStruct::MinAlignment: 0x5C
Off::UClass::CastFlags: 0xD8
Game uses FProperty system
Off::UStruct::ChildProperties: 0x50
Applaying fix to hardcoded offsets
Off::FField::Next: 0x18
Off::FField::Class: 0x8
Off::FField::Name: 0x20
Off::FField::Flags: 0x28
Off::FFieldClass::CastFlags: 0x10
Off::UStruct::StructBaseChain: 0x30
Off::UClass::ClassDefaultObject: 0x110
Off::UClass::ImplementedInterfaces: 0x1D8
Off::UEnum::Names: 0x40
Off::UFunction::FunctionFlags: 0xB0
Off::UFunction::ExecFunction: 0xD8
Off: roperty::ElementSize: 0x34
Off: roperty::ArrayDim: 0x30
Off: roperty::Offset_Internal: 0x44
Off: roperty: ropertyFlags: 0x38
UBoolProperty::Base: 0x70
Off::EnumProperty::Base: 0x70
UPropertySize: 0x70
Off::ObjectProperty: ropertyClass: 0x70
Off::ByteProperty::Enum: 0x70
Off::StructProperty::Struct: 0x70
Off: elegateProperty::SignatureFunction: 0x70
Off::ArrayProperty::Inner: 0x78
Off::SetProperty::ElementProp: 0x70
Off::MapProperty::Base: 0x70
Off::InSDK::ULevel::Actors: 0xA0
Off::InSDK::UDataTable::RowMap: 0x30
PE-Offset: 0x16B9C20
PE-Index: 0x4C
Detected 3 GWorld
GWorld WAS NOT FOUND!!!!!!!!!
Off::InSDK::Text::TextSize: 0x10
Off::InSDK::Text::TextDatOffset: 0x0
Off::InSDK::Text::InTextDataStringOffset: 0x20
Dumper-7: bIsObjPtrInsteadOfFieldPatdProperty = false
Dumper-7: bUseUint8ArrayDim = false
解決方案與替代資源
針對《深海迷航 2》的 Dump 問題,社羣已有現成的解決方案:
Subnautica2CheatMenu.dll 檔案資訊
| 檔案名稱 | 檔案大小 | 下載平臺 | | Subnautica2CheatMenu.dll | 396.0 KB | Pixeldrain |
所有站內附件皆會附上安全掃描報告 請會員查看純淨度百分比後判斷使用
相關檔案須知: 取得檔案前,請先詳細閱讀文章內容 避免不必要錯誤與誤會發生。 也可多參考文章討論樓層內容 了解附件檔案相關討論資訊。
進階除錯技巧
如果你堅持要自己找出 GWorld,以下是幾個實用的方向:
常見問題Q&A
Q:為什麼 Dumper-7 會偵測到多個 GWorld 卻無法確認?
A:《深海迷航 2》可能使用了動態載入或多世界系統,導致記憶體中存在多個有效的 UWorld 指標。需要透過實際遊戲行為(如切換地圖、載入存檔)來驗證哪一個是真正的主世界指標。
Q:FProperty 系統對修改器開發有什麼影響?
A:FProperty 是 Unreal Engine 4.25+ 的新屬性系統,取代了舊的 UProperty。這意味著傳統的偏移量查找方式需要調整,建議使用支援 FProperty 的最新版 Dumper-7 或 《Cheat Engine》V7.6 中文化版超強記憶體解鎖工具:遊戲外掛製作神器!。
Q:Subnautica2CheatMenu.dll 安全嗎?
A:此 DLL 為社羣開發者釋出的修改器模組,使用任何第三方 DLL 都存在風險。建議在離線模式或備份存檔後使用,並使用防毒軟體掃描。
Q:沒有 GWorld 還能開發修改器嗎?
A:可以,但難度大幅提升。GWorld 是存取遊戲世界資訊的捷徑,沒有它就需要透過 GObjects 遍歷所有物件來找到目標,效率較低且程式碼更複雜。
Q:《深海迷航 2:異星水域》的記憶體結構和初代差很多嗎?
A:基礎結構相似,但偏移量和部分系統實作有差異。建議不要直接套用初代的腳本,需要重新 Dump 確認正確位址。
重點回顧
- Dumper-7 找不到 GWorld 是《深海迷航 2》開發修改器的常見問題
- 關鍵在於手動驗證 3 個候選位址,或直接使用現成的 CheatMenu DLL
- 遊戲使用 FProperty 系統,確保工具版本相容
- 開發修改器時記得備份存檔,避免損壞遊戲進度
|