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::stringnew 分配的指標傳給遊戲函式,幾乎必然造成崩潰。


目錄全貌

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

閱讀順序建議

ZAllocBaseZAllocAnonSelector/StrSelectorZAllocExZXStringZRefCountedZRefZArray/ZList/ZMapTSecTypewinhook_types


誰在用這些型別?

用到的地方使用哪個型別
向 MapleStory 傳遞角色名稱字串ZXString<wchar_t>
Hook CLogin::OnPacket 等函式的參數ZRef<CLogin>
讀取玩家 HP / 座標(防作弊加密)TSecType<long>
ReplacementFuncs.h 中取代的 Windows APIwinhook_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⭐⭐