MapleClientCollectionTypes 目錄概覽
Phase 9 定位:進階選讀
完成 Phase 1–8 之後,你已能編譯、修改、測試、發布登入器。Phase 9 是進階選讀,針對「想直接操作遊戲物件(讀寫角色 HP、呼叫遊戲內部函式、傳遞字串參數)」的開發者設計。
如果你只需要修改解析度、IP、設定檔,可以跳過 Phase 9。如果你想做更深入的 Hook,請繼續。
Phase 9 從哪裡開始?一個類比
想像你在 Phase 1–8 學的是「如何在一家餐廳的廚房安裝監視器」——你知道怎麼進門、怎麼繞過保全、怎麼接線。
Phase 9 要學的是「廚房裡所有的鍋碗瓢盆叫什麼名字、怎麼用」——因為如果你想在監視器旁邊放一個機器手臂來翻動鍋裡的食物,你就必須認識那些鍋。
MapleClientCollectionTypes/ 就是那份廚具說明書。
為什麼這個目錄這麼重要?
Phase 6 教了 ZAllocEx.cpp 的實作,但那只是冰山一角。MapleClientCollectionTypes/ 這個子目錄包含了 MapleStory 引擎內部所有資料結構的仿製實作,共 18 個標頭檔、超過 3,000 行程式碼。
不學這裡,進階 Hook 必死
如果你的 DLL 要呼叫 MapleStory 內部函式、傳入字串、讀取物件資料——你就必須用和遊戲相同的型別。直接用
std::string或new分配的指標傳給遊戲函式,幾乎必然造成崩潰。
目錄全貌
MapleClientCollectionTypes/
├── 記憶體分配系統
│ ├── ZAllocBase.h ← 分配器基底,定義 4 種 Block 大小
│ ├── ZAllocAnonSelector.h ← 一般物件的分配策略選擇器
│ ├── ZAllocStrSelector.h ← 字串專用分配策略選擇器
│ ├── ZAllocEx.h ← 完整記憶體池實作(核心!)
│ └── ZFatalSection.h ← 執行緒鎖定結構(ZAllocEx 需要)
│
├── 字串系統
│ └── ZXString.h ← MapleStory 自訂字串型別(必學)
│
├── 智慧指標系統
│ ├── ZRefCounted.h ← 引用計數基底類別
│ ├── ZRefCountedAccessor.h ← 存取器輔助
│ ├── ZRefCountedDummy.h ← 非 ZRefCounted 型別的包裝
│ └── ZRef.h ← 智慧指標主體(必學)
│
├── 集合型別
│ ├── ZArray.h ← 動態陣列
│ ├── ZList.h ← 雙向鏈結串列
│ └── ZMap.h ← 雜湊 Map(Key-Value)
│
├── 物件回收池
│ ├── ZRecyclable.h ← 回收池基底 mixin
│ ├── ZRecyclableAvBuffer.h ← 可用緩衝區管理器
│ └── ZRecyclableStatic.h ← 靜態尺寸回收池
│
└── 安全型別(防作弊相關)
├── TSecType.h ← 加密數值型別(HP/MP/座標)(必學)
├── ZtlSecure.h ← Thread-local 加密型別
└── winhook_types.h ← Windows API Hook 函式指標定義(必學)
依賴關係圖
graph TD ZAllocBase --> ZAllocAnonSelector ZAllocBase --> ZAllocStrSelector ZAllocAnonSelector --> ZAllocEx ZAllocStrSelector --> ZAllocEx ZFatalSection --> ZAllocEx ZAllocEx --> ZXString ZXString --> ZAllocStrSelector ZRefCounted --> ZRefCountedDummy ZRefCountedDummy --> ZRef ZRefCountedAccessor --> ZRef ZRecyclable --> ZRefCountedDummy ZRecyclableAvBuffer --> ZRefCountedDummy ZAllocEx --> ZArray ZRefCountedAccessor --> ZList ZRefCountedDummy --> ZList ZRecyclable --> ZMap
閱讀順序建議
ZAllocBase→ZAllocAnonSelector/StrSelector→ZAllocEx→ZXString→ZRefCounted→ZRef→ZArray/ZList/ZMap→TSecType→winhook_types
誰在用這些型別?
| 用到的地方 | 使用哪個型別 |
|---|---|
| 向 MapleStory 傳遞角色名稱字串 | ZXString<wchar_t> |
Hook CLogin::OnPacket 等函式的參數 | ZRef<CLogin> |
| 讀取玩家 HP / 座標(防作弊加密) | TSecType<long> |
ReplacementFuncs.h 中取代的 Windows API | winhook_types.h 的函式指標型別 |
任何 DLL 內的 new / delete 操作 | 全域覆蓋後走 ZAllocEx |
本 Phase 各篇對照
| 篇號 | 標頭檔 | 重要程度 |
|---|---|---|
| 02_ZAllocEx完整解析(標頭與實作) | ZAllocEx.h + 分配器系列 | ⭐⭐⭐ |
| 03_ZXString_MapleStory字串型別 | ZXString.h | ⭐⭐⭐ |
| 04_ZRef智慧指標與引用計數 | ZRef.h 系列 | ⭐⭐ |
| 05_ZArray_ZList_ZMap集合型別 | ZArray/ZList/ZMap.h | ⭐⭐ |
| 06_TSecType防作弊安全型別 | TSecType.h + ZtlSecure.h | ⭐⭐⭐ |
| 07_winhook_types_Windows_API_Hook簽名 | winhook_types.h | ⭐⭐ |