Skip to content

Value Search zh TW

bbfox0703 edited this page Jul 11, 2026 · 3 revisions

🌐 English · 繁體中文 · 日本語

Value Search

Value Search 分頁掃描反射的 (UPROPERTY) 欄位,遍歷所有 UObject 實例以尋找符合謂詞的值 — 本質上是 Cheat Engine 的 Find First Scan 針對 UE 的物件圖進行的改編。使用它來確定遊戲值的儲存位置,然後透過 Live Walker 檢查擁有該欄位的物件並提取指標鏈。

Single-Value Scan

預設模式:在所有物件中尋找單一值的所有實例。

Basic workflow

  1. Type 下拉式選單中選擇資料型別Int32FloatFStringFVector 等。如果不確定,請從 NumericNoByte 開始(它在一次傳遞中掃描 word/dword/qword/float/double;排除 1 位元組欄位,以免小值泛濫結果)。
  2. Scan選擇謂詞
    • Exact — 值等於你的輸入(例如 HP = 100)。
    • Bigger / Smaller — 數值排序(例如 level > 50)。
    • Between — 範圍(例如 mana 25..75)— 輸入兩個邊界後顯示即時預覽。
    • Contains / StartsWith / EndsWith — 字串的子字串比對。
  3. 輸入值(例如 100"PlayerName"1.5,2.5,3.5 用於 FVector)。
  4. 點擊 First Scan。DLL 遍歷所有 GObject 實例及其 TArray 元素,針對謂詞測試反射的數值 UPROPERTY 欄位,並返回符合項目。
  5. 使用 Next Scan 進行精煉:變更謂詞或值(例如 HP 變更為 95),點擊 Next Scan。DLL 重新讀取現有候選項,並保留仍然符合的項目。
  6. 在精煉時使用 Changed / Unchanged / Increased / Decreased前一次掃描進行比較(不需明確的值 — 值框會隱藏)。

Per-scan conditions

Control Behavior
Game classes only 預設開啟。跳過引擎套件(/Script/Engine、/Script/CoreUObject 等);遊戲類別 + Actor/Pawn/Component 衍生物始終保留。掃描更快,結果更清晰。
Parallel scan 預設開啟。First Scan 使用背景工作執行緒(快速)。關閉 = 單執行緒,對反篡改更隱蔽。Next Scan 已是單執行緒。
Batch read 預設開啟。在一個讀取主體中讀取每個物件的固定欄位(更少的系統呼叫、更好的快取)。關閉 = 每個欄位一次讀取(精確位元組邊界)。僅限 First Scan。
Deep (nested containers) 預設關閉。也掃描深度嵌套容器內部(例如 SaveSlot[1].ItemList[3].Mods[N].Value)。較重,但找到陣列/結構中掺藏的值,淺層掃描會遺漏。
Native-C (raw) 預設關閉。選擇性加入。請參閱下方Native-C fields
Newest first 預設關閉。由高索引走至低索引(最近分配的優先),使截斷保留新實例而非舊樣板。當 Native-C 開啟時自動啟用。何時取消勾選:如果值存在於遊戲開始時生成的主角上(低索引)。
Skip Engine/System noise 預設關閉。預先過濾:在掃描時跳過純引擎/系統類別(UI 小工具、紋理、聲音、Niagara、動畫實例)— 永不進入結果。與下面的類別選擇器不同(後者在之後過濾)。遊戲護欄保留 Actor/Pawn/Component/PlayerState/GameInstance 衍生物。在 First Scan 上鎖定。
Max 預設 50k。命中計數達到此時停止;如果結果被截斷則提高。
Timeout 預設 25s。掃描的截止時間;對於超時的 400K+ 物件遊戲,提高此值。Next Scan(精煉)快速 — 對兩種模式都使用此值。

Rounding mode(用於數值掃描)

Round(預設)、TruncCeil — 分數浮點數/雙精度數目標如何被化簡為遊戲顯示的整數以供比較:

  • Round:10.9 → 11;Between 10.9–11.1 → 11–11。
  • Trunc:10.9 → 10;Between 10.9–11.1 → 10–11。
  • Ceil:10.1 → 11;Between 10.1–11.1 → 11–12。

整數欄位和 Float/Double 欄位值不受影響;僅在輸入時會強制轉換分數目標。(取代了舊的 ± 容差帶。)

Results grid

欄位:Class.Field | Type | Origin(Reflected vs Native-C)| Value | Offset | Address | Instance(物件名稱)。

每列的動作按鈕:

  • Live — 跳至 Live Walker,聚焦於此欄位在實例中的位移。
  • inst — 開啟 Instance Finder,預先填入此欄位的擁有類別。
  • Addr — 複製欄位的絕對記憶體位址。
  • 🔗 — 在 Related 分頁中顯示此實例的相關物件(元件、GAS AttributeSet 等)。
  • 🌍 — Locate in GWorld:從全域 GWorld 查找至此實例的最短指標路徑,在 Live Walker 中開啟。
  • — Locate in GameEngine:與 GWorld 相同但從 UGameEngine 為根(可以到達 GWorld 無法到達的引擎擁有的物件)。
  • 📊 Pivot (實驗性) — 把這個欄位送到 Class Pivot 分頁,作為跨該類別實例的投影值(projected value)(Class Pivot 依身分或另外選定的 key 欄位分組,而非依這個欄位)。僅在實驗性 Class Pivot 分頁可用時顯示。

Filter & Sort(底列,在完整結果集上的伺服器端):

  • 關鍵詞過濾(任何欄位,不區分大小寫)。
  • 排序選擇器:Scan order、Value、Class、Field、Type、Offset、Address、Instance;Desc 切換。
  • 頁面載入:初始顯示前 1,000 列;Load More 取得下一頁。

Multi-Value / Group Scan

尋找同時在不同位移處保留 2–4 個值的物件 — 比單個單值掃描更具選擇性。例如:透過同時符合 Str=24、Def=18、Dex=15、Int=20一起來定位統計物件。

Basic workflow

  1. 在頂部切換 Single valueMultiple values (group)
  2. 輸入 2–4 個值 — 每列一個。每列具有:
    • Data type(預設 NumericNoByte)。
    • Scan type(Exact / Bigger / Smaller / Between / Changed / Unchanged / Increased / Decreased — 與單值相同)。
    • Value 框;對於前值型別隱藏。
    • ..to 框(僅限 Between)。
    • 即時 Between 範圍預覽。
  3. 點擊 Group First Scan 以尋找一次符合所有值的物件。
  4. 點擊 Group Next Scan 進行精煉 — 例如輸入新值或切換至 Unchanged 以進一步縮小範圍。

Group-specific options

Control Behavior
Deep (nested containers) 預設關閉。每個數值 TArray / 結構陣列元素都成為其自己的符合區塊;在深度嵌套容器內尋找分組。
Cross-object (owned components) 預設關閉。將每個 actor 的擁有子物件(元件、GAS AttributeSet)折入 actor 的符合區塊,以便找到分佈在 {actor、其元件、屬性集} 中的分組。
Native-C (raw) 預設關閉。包括每個物件區塊中的非受管漏洞。
Newest first 預設關閉。由新至舊走(使用 Native-C 時自動啟用)。如果目標是早期生成、低索引物件,則取消勾選。
Skip Engine/System noise 預設關閉。與單值相同的預先過濾。
Rounding mode 與單值共享;應用於所有槽。
Timeout 與單值共享。

Group results(主從)

頂級網格:列 = 符合的物件。欄:Class | Instance | Matched values(摘要)。

選擇一列以展開並查看下方的詳細面板

  • Locked offset table(當所有槽都已匯聚到單個位移時)— 例如 "🔒 Class — Str@0x20, Def@0x24, Dex@0x28, Int@0x2C"。
  • 各槽符合的欄位項目:Lock status | Class.Field path | Value | 按鈕(Live / Addr / 🌍 / / 📊 Pivot (實驗性——把該槽送到 Class Pivot,僅在該分頁可用時顯示))。

所有切換(LiveLocateCopy)重複使用單值事件;跨物件槽開啟擁有的子物件(元件/AttributeSet)。

Filter & Sort(伺服器端):關鍵詞過濾(class/instance/field/value)、按 Scan order / Class / Instance / First value / First offset 排序。


Native-C Fields — Finding Non-UPROPERTY Values

預設情況下,Value Search 只看得見 UPROPERTY 反射的欄位。許多遊戲將遊戲值(HP、MP、耐力、統計)儲存為純 C++ 成員沒有 UPROPERTY() 巨集 — 這些對反射不可見。

Why Native-C scanning matters

  • **問題:**反射的欄位走針器僅讀取屬性元資料;非受管位元組被跳過。Cheat Engine 的原始掃描可以找到它們;Value Search 無法找到。
  • 解決方案:啟用 Native-C (raw) 以也掃描非受管漏洞 — 每個物件內的位元組範圍(從 UObject 標頭之後到類別的 PropertiesSize)沒有 UPROPERTY 涵蓋。掃描器使用「Guess What」啟發式將原始位元組解釋為 Int32/Float/等。

How it works

  1. 開啟 Native-C (raw)(單一或分組模式)。
  2. 選擇你的資料型別(僅限數值:Int32、Float 等 — 無字串、向量或布林值)。
  3. First Scan 故意很嘈雜 — 漏洞位移處任何符合的 4 個位元組都是命中。通過以下方式縮小範圍:
    • Game classes only 切換(跳過引擎噪聲)。
    • 結果下方的類別選擇器(排除明顯的非目標)。
    • 或簡單地切換至 Newest first 保留新實例(自動啟用)。
  4. **Next Scan 以匯聚:**變更值或使用 Changed / Unchanged / Increased / Decreased 重新讀取並精簡嘈雜的第一個結果。

What you'll see

符合的列顯示 Origin 欄:

  • Reflected — 普通 UPROPERTY 欄位。
  • Native-C (Int32) — 解釋為 Int32 的原始漏洞;「?」後綴(Int32?)表示不確定的信心。

Deep + Native-C

同時啟用 Deep 和 Native-C 時,原始掃描另外進入結構陣列元素內部 — 例如沒有 UPROPERTY 成員的 USTRUCT 的 TArray 內的值。更重且更嘈雜;配合獨特的值 + Next Scan 精煉。


Locate in GWorld / GameEngine

成功掃描後,點擊結果列上的 🌍 Locate in GWorld 以尋找從全域 GWorld 下到該實例的最短指標路徑,並在 Live Walker 中顯示該鏈的位置。

🌍 GWorld — 可到達世界根物件(Pawns、NPC、物品、可摧毀物件等)。
⚙ GameEngine — 改為到達引擎擁有的物件(UI、GameInstance、LocalPlayer、引擎系統)。當實例不在世界圖中時使用。

如果實例自掃描以來已移動或被釋放,路徑搜尋會報告「no path」或「invalid」。


Tips & Gotchas

  • Containers(TArray、TSet、TMap) — 每個元素都被掃描並顯示為 FieldName[index]。超過 10,000,000 個元素的陣列作為損壞防護被跳過。
  • Instance selection — 掃描後,點擊 Load More 來取得其他頁面(伺服器端分頁)。Filter/Sort 在 DLL 中的完整工作階段上運行;網格始終顯示目前視窗。
  • Session lifetime — 工作階段會一直存在,直到你點擊 New Scan 或切換分頁。Next Scan 重新讀取目前候選集;New Scan 丟棄它並為新查詢重置。
  • Value2(Between) — 當 Scan type 是 Between 時,需要上限;即時預覽在你所選的進位模式下顯示強制轉換的整數 + 實字浮點數範圍。
  • Case sensitivity — 僅影響字串型別(FString、FName、FText);預設不區分大小寫(Cheat Engine 風格)。
  • String vectors — 輸入 FVector 為 X,Y,Z(例如 10.5,20.3,30.1)。
  • Small values + NumericAll — 使用 NumericAll(包括 1 位元組欄位)搜尋 0、1 或 255 將符合所有物件中大量欄位;使用 NumericNoByte 或更大/更獨特的值以避免泛濫。
  • Native-C first scans truncate — 在大型遊戲上,嘈雜的原始掃描可能在掃描所有物件前達到結果上限。Newest first 確保倖存者是最近分配的(最新遊戲實例),而不是古老的 CDO。Game classes only 預先過濾噪聲。在縮小範圍後使用 Next Scan 匯聚。

Cross-references

  • Instances — 按名稱/屬性模式尋找特定類別的實例。
  • Live Walker — 檢查 UObject 並走其指標鏈;匯出 Cheat Engine 指令碼。
  • Home — 概述和功能索引。

請參閱儲存庫 README 以取得編譯及使用說明。

Clone this wiki locally