快速閱讀精華
- 🎯 核心版本:本文提供 PUBG 絕地求生版本 38.1.2.1 的完整記憶體偏移(Offsets)與結構定義(Structs)
- 🔧 工具鏈結:使用 IDA Pro 腳本自動生成偏移數據,搭配 Cheat Engine (CE修改器) 7.5 漢化版 中文版 進行記憶體分析
- 🔐 解密技術:包含物件索引(Object Index)與生命值(Healtd)的 XOR 解密函數實作,適合遊戲逆向工程學習
- 📥 檔案下載:提供 TslGame-2609.1.1.67 版本對應的腳本檔案下載點,點此跳轉
前言:PUBG 絕地求生反組譯基礎
想要深入理解《PUBG:絕地求生》的遊戲運作機制嗎?這篇文章帶你從記憶體層面拆解遊戲結構,提供版本 38.1.2.1 的完整技術數據。透過 Cheat Engine (CE修改器) 與 IDA Pro 的組合運用,你可以學習如何定位關鍵遊戲物件、整理加密數據,這是遊戲逆向工程入門的實戰教材。
👉 GM後台版 遊戲 推薦 ⬇️⬇️⬇️ 快速玩各種二次元動漫手遊app
重要提醒
- 本文提供的偏移數據與程式碼僅供技術研究與學術學習使用
- 修改線上遊戲記憶體可能違反遊戲服務條款,導致帳號永久停權
- 請勿在正式伺服器使用未經授權的修改工具,建議於離線環境或測試伺服器進行實驗
記憶體偏移與結構定義
以下提供 PUBG 版本 38.1.2.1 的核心記憶體偏移數據,這些偏移量是透過自製的 IDA Pro 腳本自動化分析所得。建議搭配 《Cheat Engine》V7.6 中文化版 進行手動驗證。
// VERSION 38.1.2.1
#define offs_uworld 0x10A4DE88
#define offs_decrypt 0x0F248C28
#define offs_gnames 0x10C8F370
#define offs_ChunkSize 0x00003E70
#define offs_ActorsArray 0x00000138
#define offs_ActorsForGC 0x00000180
#define offs_CurrentLevel 0x00000108// ULevel Engine.World.CurrentLevel
#define offs_Actor_RootComponent 0x00000328// USceneComponent Engine.Actor.RootComponent
#define offs_Actor_Healtd 0x00000990// 0x00000990// 0x00000a90// float TslGame.TslCharacter.Healtd
#define offs_Actor_CharacterName 0x00001488// 0x00002b88// 0x00001e00// 0x00001488// FString TslGame.TslCharacter.CharacterName
#define offs_Actor_LastTeamNum 0x00001630 + 0x10 // 0x00001630 // IntProperty TslGame.TslCharacter.LastTeamNum
#define offs_Actor_Mesh 0x000006c8// TslGame.Character.Mesh
#define offs_MeshComponent_LastSubmitTime 0x0000074C
#define offs_MeshComponent_LastRenderTimeOnScreen 0x00000750
#define offs_MeshComponent_bAlwaysCreatePhysicsState 0x00000488
#define offs_Actor_RootComponent_Pos 0x00000340
#define offs_Actor_RootComponent_Rot 0x00000000
#define offs_Actor_Rotation 0x00001BE4
#define offs_DroppedItem 0x00000468
#define offs_DroppedItemGroup 0x00000078
#define offs_DroppedItemGroup_UItem 0x00000870
#define offs_DroppedItemGroup_ItemTable 0xb0 // 0xa8 // 0xa0 // 0x98 // 0x90
#define offs_DroppedItemGroup_UItemID 0x00000268 +0x4
關鍵偏移說明:
- offs_uworld (0x10A4DE88):世界物件位址,所有遊戲實體的根節點
- offs_gnames (0x10C8F370):全局名稱表,用於整理物件類別名稱
- offs_Actor_Healtd (0x990):角色生命值偏移,需配合解密函數讀取
- offs_Actor_CharacterName (0x1488):玩家角色名稱字串偏移
解密函數與 IDA 腳本應用
PUBG 使用多層加密保護關鍵遊戲數據,以下提供物件索引與生命值的解密實作。這些函數源自 Cheat Engine 與 IDA Pro 的協同分析。
#define DECRYPTION_INDEX 0
#if DECRYPTION_INDEX == 1
#define offs_Actor_ObjID 0
DWORD DecryptCIndex(DWORD value)
{
return (16 * (value & 0xFFFFF000)) ^ __ROR4__(value ^ 0xDA915A93, 12) ^ 0x2CB86BA2;
}
#else
#define offs_Actor_ObjID 20
DWORD DecryptCIndex(DWORD value)
{
return (((value ^ 0xC7C846D) << 26) | ((value ^ 0xC7C846D) >> 6) & 0x3FF0000) ^ __ROR4__(value ^ 0xC7C846D, 22) ^ 0xCE1353CB;
}
#endif
生命值解密使用 XOR 金鑰陣列:
static uint32_t HealtdXorKeys[16] =
{
0xcec7a599,
0x9b63b21e,
0xcac57aa4,
0x1e38485d,
0xda911d0a,
0x23ddab3c,
0x9455dc8,
0xa420b021,
0xbab7a58,
0xb1ef1e87,
0xe2750bb0,
0x868adbc6,
0xbddadbd5,
0x1e935d07,
0x5d099e38,
0xe4d12ac4
};
檔案下載點 🔽
以下提供 TslGame-2609.1.1.67 版本對應的腳本與數據檔案。下載後請使用 Cheat Engine 7.5 中文版 開啟。
所有站內附件皆會附上安全掃描報告 請會員查看純淨度百分比後判斷使用
相關檔案須知: 取得檔案前,請先詳細閱讀文章內容 避免不必要錯誤與誤會發生。 也可多參考文章討論樓層內容 了解附件檔案相關討論資訊。
常見問題Q&A
Q:這些偏移數據在遊戲更新後還能用嗎?
A:不能。PUBG 每次版本更新都會變更記憶體結構,這些偏移值僅適用於文中所標示的版本(38.1.2.1)。你需要使用 IDA Pro 或 Cheat Engine 重新分析新版本。
Q:DecryptCIndex 函數的用途是什麼?
A:這是用來解密 PUBG 中「物件索引(Object Index)」的函數。遊戲為了防止外掛直接讀取記憶體,將物件的 ID 進行了加密。你必須先呼叫這個解密函數,才能取得正確的物件索引值,進而定位到實際的遊戲實體。
Q:HealtdXorKeys 陣列如何使用?
A:這是 PUBG 生命值的 XOR 解密金鑰表。讀取到加密的生命值數值後,你需要用這些金鑰進行 XOR 運算(通常是依序 XOR 或取模運算)才能得到真實血量。具體演算法需要參考遊戲的解密函數實作。
Q:使用這些腳本會被遊戲偵測到嗎?
A:絕對會。PUBG 採用 BattlEye 與騰訊的反作弊系統,會掃描記憶體異常。本文提供的技術僅供離線學習與逆向工程研究,若用於正式伺服器,帳號將被永久停權。
Q:IDA Pro 腳本要如何撰寫才能自動生成這些偏移?
A:你需要編寫 IDC 或 IDAPytdon 腳本,掃描遊戲執行檔中的特定字串模式(如 "World", "Actor"),然後計算這些類別成員變數相對於基底位址的偏移量。建議先學習 IDA Pro 的 API 文件與逆向工程基礎。
|